指针"/>
C语言中的多级指针
多级指针:
int main(){//指针数组里面元素存储的是指针int a[] = {1, 2, 3};int b[] = {4, 5, 6};int c[] = {7, 8, 9};//指针数组是一个特殊的二维数组模型//指针数组对应于二级指针int *arr[] = {a, b, c};//指针数组和二级指针建立关系int **p = arr;//arr[0][0] a[0]printf("%d\n", **p);//二级指针加偏移量 相当于跳过了一个一维数组大小// printf("%d\n",**(p+1));//打印b数组的第一个元素//一级指针加偏移量 相当于跳过了一个元素printf("%d\n", *((*p +1)));//打印a数组第二个元素printf("%d\n", *(*(p+1)+1));//打印b数组的第二个元素for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){//三种方式都是打印三个数组里的所有元素printf("%d ", p[i][j]); printf("%d ", *(p[i]+j));printf("%d ", *(*(p+i)+j));}puts("");}}
int main(){int a = 10;int b = 20;int *p = &a;int **pp = &p;int ***ppp = &pp;//*ppp == pp == &p//**ppp == *pp == p == &a;//***ppp == **pp ==*p ==a;//**pp = &b;//等价于p = &b//不懂就用下面注释正推或者反推//pp 二级指针的值 //*pp 二级指针的地址 //**pp 一级指针的值//所以这里的p就相当于&b**pp = 100;printf("%d\n", *p);//100printf("%d\n", a);//100return 0;
}
C语言中的*和&
int main(){//定义变量a = 10;int a = 10;//猜想 既然*能加多个 那么&是否能加多个呢?//***p是三级指针,应该对应二级指针地址 &a为一级指针 那么&&&a是不是就为三级指针呢?//如下式子 int ***p = &&&a;//err//结论:不能,报语法错误,指向的地址没有储存,缺少了中间相关联的媒介 不能有多个&}
更多推荐
C语言中的多级指针
发布评论