指针用于“存放内存单元地址”
声明:数据类型 *标识符;//形如 int *p;//存放int数据类型的地址
数据在定义的时候程序就已经为其分配内存空间
其中关于* 和 &
作为一元操作符时
int *p;//*声明指针 int a; int *ptr=&a;//&取地址,&作为参数传入函数的时候是引用
指针的赋值
int a; int *p=&a;//指向a地址的指针
等价于
int a,*p; p=&a;
ok,我们来看一下数组
数组名实际上是一个不能被赋值的指针(指针常量)
接下来我们可以通过指针来取出数组中的数据
#include<iostream> using namespace std; int main(){ //对于指针的学习笔记; //指针是用来存放数据的内存单元地址的,声明一个变量的时候就已经为该变量申请内存空间 cout<<"指针是用来存放数据的内存单元地址的,声明一个变量的时候就已经为该变量申请内存空间"<<endl; int a=1;//已经为a分配空间 int *p=&a,*pa; pa=&a;//指向int型数据地址的指针,也就是说int *p=&a等价于int *p;p=&a; cout<<"p="<<p<<endl; cout<<"*P="<<*p<<endl; cout<<"pa="<<pa<<endl; cout<<"*pa="<<*pa<<endl; cout<<"-------------------------\n测试:\n"; //进阶,我们知道数组的名字表示首地址,我们用指针来打印数组 int array[]={1,9,9,8,0,8,22};//七个元素 int *ptr=array;//声明指针的时候指向数组第一个元素的地址 也等价于int *ptr;ptr=array; //等价 // int *ptr; // ptr=array; for(int i=0;i<7;++i){ cout<<*(ptr+i)<<" "; } cout<<endl; return 0; }
上面是我测试的时候用的,简化一下
#include<iostream> #include<stdlib.h> using namespace std; int main(){ system("color 3"); cout<<"-------------------------\n测试:\n"; //进阶,我们知道数组的名字表示首地址,我们用指针来打印数组 int array[]={1,9,9,8,0,8,22};//七个元素 int *ptr=array;//声明指针的时候指向数组第一个元素的地址 也等价于int *ptr;ptr=array; for(int i=0;i<7;++i){ cout<<*(ptr+i)<<" "; } cout<<endl; system("pause"); return 0; }
ok,nice !