最近在复习C++,想把每次复习的东西挑重点的写在我的BLOG上面,以来最为个人复习和总结。二来把这些东西和大家共同分享一下。
指针
int a(5);
int *p=&a;
&a代表变量a的地址。指针p的赋值必须指向某个变量的地址。
int b[10];
int *p=b;
b相当于b数组第一个元素的地址&b[0]
所以上面可以这样直接赋值。
对于二维数组b[2][4]
可以这样通过指针调用元素:*(*(b+i)+j; *(b[i]+j); *(b+i)[j]; *(&b[0][0]+4*i+j);
由此可以拓展到三维数组
int (*p)[3];
表示p所指向的是3个元素的一维数组
int b[2][3]={1,2,3,4,5,6};
int (*q)[3];
q=b;
可以通过
cout<<(*q)[i]<<endl;
输出数组b当中的第i个元素
函数的指针:
double sin(double x);
double(*pf)();
pf=sin;
表明pf是一个指向函数的指针,它所指向的函数是sin,这里用sin给pf赋值,实际上是让pf指针指向sin函数在内存中的入口地址。
另外指针比较具体的理解为
&表示取地址 *表示取内容
&a表示取变量a的地址 *p=&a就表示把a的地址放到指针p的内存单元的内容里面去。
当然,大家记住了在比如输出cout<<*p<<endl;当中,输出的可是*p的所指向内容而不是变量a的地址了哦。
评论