小甲鱼的指针和二维数组
这个int(*p) 是数组array的什么东西啊?
p 是一个指针,指向有3个元素的数组,数组中存储的元素类型是 int
C语言复杂声明解析
https://blog.csdn.net/wangweixaut061/article/details/6549768 人造人 发表于 2021-12-4 18:18
p 是一个指针,指向有3个元素的数组,数组中存储的元素类型是 int
那第一个打印中**(p+1)的意思是不是,*(p+1)指向的是{3,4,5}这个数组的首地址,所以打印出来的值是3 gjfyyds 发表于 2021-12-4 20:41
那第一个打印中**(p+1)的意思是不是,*(p+1)指向的是{3,4,5}这个数组的首地址,所以打印出来的值是3
*(p+1)指向的是{3,4,5}这个数组的首地址
不对
p + 1 指向 {3,4,5}
*(p + 1) 就是 {3,4,5}
**(p + 1) 是 3
人造人 发表于 2021-12-4 20:47
*(p+1)指向的是{3,4,5}这个数组的首地址
不对
p + 1 指向 {3,4,5}
那为啥**(p+1)就不能是4or5呢? gjfyyds 发表于 2021-12-4 21:23
那为啥**(p+1)就不能是4or5呢?
*(p + 1) 就是 {3,4,5}
数组的名字是数组第0个元素的地址
*(p + 1) 这个就可以看成是数组的名字
这个数组第0个元素是3
对3这个元素的地址解引用,得到的就是3
gjfyyds 发表于 2021-12-4 21:23
那为啥**(p+1)就不能是4or5呢?
这个 *str 得到的为什么不是 '2' or '3' or '4' ?
#include <stdio.h>
int main(void) {
char str[] = "1234";
printf("%c\n", *str);
return 0;
}
人造人 发表于 2021-12-4 21:45
这个 *str 得到的为什么不是 '2' or '3' or '4' ?
是不是因为数组的第0号元素的地址代表该数组的地址,所以*str打印出来的就是1 gjfyyds 发表于 2021-12-4 22:03
是不是因为数组的第0号元素的地址代表该数组的地址,所以*str打印出来的就是1
不是
数组的名字是数组第0个元素的地址
是数组的名字,不是数组的地址
str 数组的名字
&str 数组的地址
数组的名字是数组第0个元素的地址
str 就是 &str
所以
*str 就是 *&str
取地址然后又解引用,所以就是 str
人造人 发表于 2021-12-4 22:34
所以
*str 就是 *&str
取地址然后又解引用,所以就是 str
懂了,懂了,非常感谢你的指导{:10_275:}
页:
[1]