最近在复习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的地址了哦。

评论