欧阳少恭襄铃同人文:帮忙解释一下c程序 关于指针的

来源:百度文库 编辑:高考问答 时间:2024/04/28 20:59:55
main ()
{
int a,b;
int *pointer_1,*pointer_2;
a=100;
b=10;
pointer_1=&a;
pointer_2=&b;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pointer_1,*pointer_2);
}
为什么printf("%d,%d\n",*pointer_1,*pointer_2);
运行结果也是100,10 他被赋予的不是a,b地址吗?100,10 是地址?
能不能详细解答一下 谢谢

好可笑喔...
*是间接访问指向地址里的值(称之间访)

pointer_1=&a

&a是去a的地址.记主,pointer_1里面存放的值只能是地址,要不编译器这关就过不了.
假设a地址为FF00
那pointer_1就指向FF00(拜托拿本画连续内存空间)
*pointer_1值就等于a的值100;
pointer_1的值为FF00 看好,这次没*号了
&pointer_1的值是FF04 看好,这是pointer_1的地址
&a的值是FF00 看好a的地址.
上面这几个好好琢磨吧```这是指针第一小小小关,你要过不了,就不要学了,因为你资质太差了.以后还难的,以后还要学指针操作数组或矩阵```

因为你用了*号,取的是指针指向的地址所存储的内容(听着好别扭)
如果要输出a、b的地址,如下
pritnf("%x,%x\n",pointer_1,pointer_2); //在有些编译器上用%p也可以

请注意这里是:printf("%d,%d\n",*pointer_1,*pointer_2);
有*的表示输出内容,如果要输出地址应该是:printf("%d,%d\n",pointer_1,pointer_2);

因为你取的是指针指向的地址的内容,如果你想输出指针的内容应该这样写
printf("%p,%p\n",pointer_1, pointer_2);

*pointer_1就是取得pointer_1地址里的值,也就是a的值了阿

printf("%p,%p\n",pointer_1,pointer_2);
&:取地址
*:取地址保存得具体值