C语言结构型数组成员引用使用指针变量赋值的问题。

图片中黄色区域标注的地方为什么不是这样写呢?
1. p_name=&s[1].name //为何不使用取地址运算符
2. strcpy(*p_name,"sun3")//为何不使用指针运算符呢?

p_name是char指针类型。结构体s中的name是char数组,同时也是指向数组首字符的char指针。所以,给p_name赋值,需要左右类型相同,s[1].name就是char指针。
strcpy函数第一个参数是char指针,p_name即是char指针,*p_name代表取p_name指向的char值。追问

谢谢,瞬间领悟!

追答

另外补充一下,数组名 和 对数组名取地址的区别。
数组名是指向数组首元素的指针,其值为首元素的内存地址;对数组名取地址,得到的是整个数组的内存地址,其值为首元素的内存地址。
可以看出,数组名 和 &数组名,其值都是首元素的内存地址,但概念不同。
数组名+1,指针“跳过”一个数组元素的内存大小。&数组名+1,则指针“跳过”整个数组的内存大小。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答