关于C语言 指针赋值问题

如题所述

第1个回答  2019-05-10
char
a[10]="XXXXXXX",*pa=a

char
a[10]="XXXXXXX",*pa=&a
这里的a和&a
这2个值应该是相同的吧,一个是数组首地址,一个是数组地址,但细节说来还是不同的
a+1,表示的是数组的第二个元素,而&a+1则表示这个数组后面的下一个地址了,很可能就是这里的a[9]+1
第2个回答  2019-09-10
char
a[10]="XXXXXXX",*pa=a
pa是这个数组的首地址.指向这个字符串.
char
a[10]="XXXXXXX",*pa=&a,其中a代表的数组元素的首地址,&a代表存放这个数组地址的地址,这时候,pa存放的仍然是地址,但已经不是数组元素的首地址了,而是存放这个数组元素首地址的地址.所以两个是不同的.
在使用
printf("%s
%x
%x
%x
%s",*pa,&pa,pa,&a,a);
为什么
结果不一样?
差距两个字节...
其中一个有乱码.

四位数字.........
这个能不能说具体下.
第3个回答  2020-02-10
char
a[10]="XXXXXXX",*pa=a
<——
*pa是值,那a相当于是a[0],这个是只把值给*pa;

char
a[10]="XXXXXXX",*pa=&a〈----是传址,传统上是不行的,但是初始化的话是可以的...在函数里面的话就不行了..
printf("%s
%x
%x
%x
%s",*pa,&pa,pa,&a,a);
先一一对应..%s对应的是*pa,*pa是值%s是字符串...,&pa也是值他是以16进制输出的,pa是首地址,照理应该不能传的,应该是乱吗...,反正就这些了
你看着办吧!
相似回答