int *p和int(*)p是一个意思,表示p是一个整型的指针变量。int **p表示p是一个整型指针变量的指针,即一个二级指针。举例说明:
int a=10;
int *p=&a;
那么*p=10;(注意:这里的*和int *p中的*不是一个意思,&是取地址,*就是取某块地址中所放的内容)
int a[3]={1,2,3};
int *p=a;//p指向的就是数组a的首地址,也就是数组名
那么*p=1;*(p+1)=2;*(p+2)=3;
继续讲解二级指针,举一个二维数组的例子就很明白。
int a[2][3]={1,2,3,4,5,6};
int **p=a;//p指向的是二维数组a的首地址,也就是数组名
这里的p是二级指针,*p是一级指针。相当于p指明数组的第几行,*p指明数组的第几列。
那么*p=a[0];*(p+1)=a[1];
**p=a[0][0]=1;
追问你说的这些我懂,但我有点像是死记那种,比如int*p=a的意思是指针p指向a。我现在想知道的是
int*p应该理解为int(*p)还是(int*)p呢?
追答可以把int *当作一个整体作为一个特殊类型,这个类型就是一个指针类型。但是要记得(int *) p这个写法是错误的,虽然可以这么理解,但是编译是通不过的。int(*p)这个写法是对的。