穿越还珠风流 完整版:C语言高手请指教

来源:百度文库 编辑:神马品牌网 时间:2024/05/06 01:36:38
如果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,那么使用到的值是什么呢?指针型的,取得的值为一个内存地址,而i取得的是一个整型数值,那么使用 *p 表示访问该内存地址的值,也就是说,*取p地址中的值!
int a,b,* p;
p = &a; 是对的,
*p = &b;(虽然没有出问题,但是不是把变量b的内在地址放在指针变量p里,而且前提条件要p已经不为NULL,不然会出错!)如以上两句一起使用如:
如:&a : 0x00001,&b : 0x00002
p : 0x00001
[0x00001] : 2

*p=&a这种写法一般出现在变量的声明语句中,int *p=&a;即声明一个整型指针变量p,并给其赋初值为变量a的地址。即p中存放的是变量a的地址。

首先*P是内容,我没有这样试过可不可以直接写成这样。
但是这样是对的,
int a,b;
int *p;
p=&a;
*p=&b;
这样写和这样写一样的
a=&b;

感觉只是为了理解, 那理论上没理解错

不过没什么意义, 毕竟指针变量也是为了最终获取变量而用的

即*p=&a没有应用市场