C语言高手请指教

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:20:44
如果p是一个指向整型的指针变量,a是一个整形变量

那么*p=&a是不是可以这样理解:

指针变量p所指向的那个变量也是指针变量(或者说存放的是另一个指针变量的地址),而这个变量存放的又是整型变量a的地址

int *p=&a;即声明一个整型指针变量p,并给指针变量p赋初值为变量a的地址。即p中存放的是变量a的地址。

如果,*p=&a;这样话,是把变量a 的地址存到指针变量p所指向的内存单元中.
例如:
main()
{
int *p,**k,a,s,t;
a=5;
p=&a;/*指针变量p存放变量a的地址*/
s=*p;
k=&p;/*指针量变量k存放指针变量p的地址,指针变量k是指向指针的指针*/
t=**k;

printf("a=%d,s=%d,t=%d",a,s,t);
}
改为下面的程序结果一样都是a=5,s=5,t=5

main()
{
int a,s,t, *p=&a,**k=&p;
a=5;
s=*p;
t=**k;

printf("a=%d,s=%d,t=%d",a,s,t);
}

不对,p指向的变量还是整形,只不过它的内容是一个地址,c语言是很灵活的,*不仅表示指针变量,它也是个根据地址来获得数据的符号,也就是说,c语言中变量的定义是无关紧要的,它主要起一个分配内存的作用,但我们还是要养成良好的编程习惯,如果要*p指向指针,应该把p定义为指向指针的指针,例:
int **p;
int *point;
int a=10;
p=point;
point=&a;
这样p指向的变量就是指针变量了,若要用p表示a就可以这样:
printf("%d",**p);
总之,养成良好的编程习惯是最重要的。

是错的
指针变量跟其它变量的使用是一样的!
如整型指针变量 p和整型变量 i
它们的使用都是直接使用 变量名 p,和 i,那么使用到的值是什么呢?指针型的,取得的值为一个内存地