**p :二级指针,表示p所指向的地址里面存放的是一个指向类型的指针。
*p:一级指针,表示p所指向的地址里面存放的是一个类型的值。
k👉5
p👉k👉5
*m👉p👉k👉5
所以输出的是5 5 5
*p是一个一级指针
如果要输出二级指针应该printf的是**m
**m👉*p👉k👉5
改变 6 就可以之间改变k
说过了r是一个一级指针 应该写r或者另外设计一个二级指针
数组指针问题——
int arr[] = { 99, 15, 100, 888, 252 };
int *p = arr;
arr 本身就是一个指针,可以直接赋值给指针变量 p。arr 是数组第 0 个元素的地址
,所以int *p = arr;也可以写作int *p = &arr[0];。也就是说,arr、p、&arr[0] 这三种写法都是等价的,它们都指向数组第 0 个元素
,或者说指向数组的开头。再强调一遍,“arr 本身就是一个指针”这种表述并不准确,严格来说应该是“arr 被转换成了一个指针”。
在这里**r👉*p👉a[0]的地址
可以有多少级指针——没有限制
这里我也不太明白 感觉是不是这个题的问题还是什么的
相同道理
**r👉*p👉a[0]的地址【也是a的地址】