标签:
指针:
很多人 都知道 指针是保存变量的地址,有时候想想还是挺迷惑的。
数组:
数组名实际就是一个地址,指向数组的首地址。
疑问1 那么我如何使用指针来操作数组呢?
int main() { int arr[3]={3,5,9}; int *ptr1[3] = {nullptr}; int (*ptr2)[3] = &arr;//ok *ptr1 = &arr[0];//ok //*ptr1 = &arr//error for(int i=0; i<3;i++) { cout<<(*ptr2)[i]<<endl;//ok cout<<ptr2[i]<<endl; cout<<(*ptr1)[i]<<endl;//ok cout<<ptr1[i]<<endl; } //printf("%d", sizeof(short)); system("pause"); return 0; }
如果还有疑问:
那么,数组指针 ,指针数组 看看下面的说明。
int *arry[10]; //指针数组 int (*arryp)[10]; //数组指针,因为数组指针指向数组,而数组也可看做是个指针,那数组指针可以理解为一个二 级指针 int a[10]; arryp = &a; //将数组地址个数组指针 arry[0] = *arryp; //arry[0]是一级指针,要将数组指针赋给指针数组,就要取内容,实际就是 arry[0] = a;
提示:数组分配是连续的地址,所以
*ptr1 = &arr[0];//ok也可以连续取出值。
二级指针:
指针也是一个对象,对象就有自己的地址,那么指针也可以赋值给指针地址。
int p1 = 100, *p2 = &p1 ; int **p3 = &p2; cout<<p1<<endl; cout<<*p2<<endl; cout<<**p3<<endl;
p3--------------------------->p2----------------------------->p1(100)
引用:
引用本身自己不是一个对象,那么就不存在地址,那么也不存在指向引用的指针。
也说明了,存在指向指针的引用。
标签:
原文地址:http://blog.csdn.net/u010236550/article/details/42746743