关于指针赋值的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 05:37:40
若有说明:int *p,m=5,n;以下准确的成程序段是
A)p=&n;scanf("%d,&p");
B)p=&n;scanf("%d,*p");
C)scanf("%d,&n");*p=n
D)p=&n;*p=m
答案选D,可是我不知道选项c到底错在哪里,请高手解答,多谢。

int *p;
只是定义了一个指针,这个至于指向的是一个随机的存储空间,并未进行初始化,即所谓的野指针。

*p = n;
此时p所指向的空间不合法,不能对其进行赋值操作。

要使用*p=n,必须保证p已经被正确初始化,具有合法的指向。