关于C语言中指针赋值的问题
怎样给指针赋值算是合法的。。指针的值要指向一个具体的变量?但是貌似可以这样的赋值inta,*p;*p=a;a并没有具体的值但是指针能这样赋值还有指针之间相互赋值有什么条件...
怎样给指针赋值算是合法的。。指针的值要指向一个具体的变量?但是貌似可以这样的赋值 int a,*p;*p=a; a并没有具体的值但是指针能这样赋值 还有指针之间相互赋值有什么条件?具体点~~~
展开
1个回答
展开全部
指针赋值问题: 1指针如何赋值? 如 int *p,**q,a; *p=1;*p=a; **q=a; 语法正确,但是p没有指向任何地址。因为在内存中指针分配的空间与变量分配的空间是不同的。变量分配的是栈区(具体的) 指针分配的是堆区(按要求的)如char *p; *p='a'; *p="aaaaa" 都正确。在计算机读取数据是是读地址后然后找到地址里面的内容。指针p是一个存放地址的变量,他本身有地址一样能输出他的地址。但a=1 ;*p=a 只代 p的内容为1,a的内容为1 。诺改为 a=1;p=&a ; *p=2;则p的内容为a的地址,a的内容为2 详细代码: main() { int *p,a=99; *p=a; *p=33; printf("%d,%d",*p,a); } 结果:33,99 //p值变,a值不变,因为p根本没有指向a的地址,先就说了计算机是根据地址找到后读取里的内容,你只是赋值,没指地址所以没有改变。 main() { int *p,a=99; p=&a; *p=9999; priintf("%d,%d",*p,a); } 结果:9999,9999 //因为改变了地址,所以p的值改变则a的值也会改变,,,
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询