c 语言中这个指针赋初值的问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 19:47:12
main( )
{ int i=10;
int *p;
*p=i;
printf(“%d”,*p);
}
上面程序为什么没有赋初值,*p=i,不是赋初值么?那它是什么意思呢?

#include "stdio.h"
void main( )
{
int i=10;
int *p;
p=&i;
printf("%d",*p);
}

应该是这样,将i的地址给p,相当于这样的程序
#include "stdio.h"
void main( )
{
int i=10;
int *p=&i;

printf("%d",*p);
}

指针指向i的内存单元。而不是将*p单独拿来用,这个相当于指存所指内存单元的值,而不是地址,所以,我们应将i的地址即&i给p.

int *p;这句话只定义了p,没有初始化,它指向的是一个未知地址.

*p=i;中*p是指p指向的值,p指向的是未知地址所以是不合法的

对p的赋值应该是
p=&i;
或者
p=malloc(sizeof(int));
*p=i;

没有给指针p赋初值,就往p指向的地址里填内容