谁帮我解释一下这小段C啊

来源:百度知道 编辑:UC知道 时间:2024/07/04 16:03:15
#include "stdio.h"

main()

{

int a=100,*pa=&a,*pp=pa;

printf("a=%d,pa=%d,pp=%d",a,pa,pp);

getch();

}
的结果为什么是a=100,pa=-60,pp=-60
请详细说说里面指针的真真指向.

a=100,*pa=&a,*pp=pa;
a的初始化值为100
指针pa的初始化值为指向a的地址。
pp指针值同pa相同。
打印要求是,打出a的值,pp和pa的值,就是a的地址。
我建议你用下面这样打印:
printf("a=%d,pa=%p,pp=%p",a,pa,pp);

这个是打印a的值,pa,pp是指针保存的是a地址。用%d是把它保存的地址转成十进制打印。
里面pa指向a的地址,因为pp=pa 所以pp也是指向a的地址。

正确的:
printf("a=%d,pa=%d,pp=%d",a,*pa,*pp);
结果应该是100,100,100;

%表示输出整形,而*是定义指针地址,a=%d,pa=%d,pp=%d 这句话把二进制转换成十进制再输出的了