关于C语言中指针赋值的问题

怎样给指针赋值算是合法的。。指针的值要指向一个具体的变量?但是貌似可以这样的赋值 int a,*p;*p=a; a并没有具体的值但是指针能这样赋值 还有指针之间相互赋值有什么条件?具体点~~~

指针赋值问题: 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的值也会改变,,,
温馨提示:答案为网友推荐,仅供参考