C语言中 指针int *a=10;和int *a; *a=10;的区别

来源:百度知道 编辑:UC知道 时间:2024/05/15 15:08:58
第一:
#include <stdio.h>
main()
{
int *p=10,*q=20;
printf("%d,%d",*p,*q);
}

第二:
#include <stdio.h>
main()
{
int *p,*q;
*p=10;
*q=20;
printf("%d,%d",*p,*q);
}
这两个问题打印出来的值怎么不一样?希望高手帮忙

int *p=10; // 相当于int *p; p=10;

相当于把0x00001010(二进制的“10”)这个地址直接赋值给指针p。

而int *p; *p=10;则是正确的写法,这里p的值由系统分配,比如是0x22334455,这个地址对应的内存单元存放的值是10。

只要记住这点:
定义指针*p p=一个地址(比如&a或则a[0])
*p=*(&a)=*(a[0])
*和&消除
所以*p=a *p=a[0]

请问:
int x;
int *p=x;和int *p=&x;那个是正确的

你的代码改成这样就行了:
#include <stdio.h>
main()
{
int x=10,y=20,*p=&x,*q=&y;
printf("%d,%d",*p,*q);
}

支持 风骚的可乐 的 他的完全正确