c语言定义指针时疑问 看如下两个定义 int *p ,a;p=&a; char *p;

2024-10-30 00:45:23
推荐回答(3个)
回答1:

字符串其实就是一个字符数组,
char c[]="asdfg";
那么c就可以代表这个字符串
这个应该明白吧
然而数组明实质上就是第一个数组元素的地址
这个没法解释哈
也就是c是就是字符a的地址
刚刚说了c可以代表这个字符串
也就是说,字符串是用它第一个字符的地址表示的
有如下代码
printf("%d","aaa");
那其实是输出的第一个a的地址
所以让指针指向字符串的时候,
不需要加地址符,因为本身就是赋值的一个地址给指针

回答2:

字符串是只存字符的数组,所以首字符就是整个字符串的首地址,获得了第一个字符的地址就可以得到整个字符串了。printf("%c\n", "abcd"[1])会得到b。

回答3:

先了解一下数组以及(提到C语言的数组就不得不提到的)C语言中关于数组的隐式转换吧……