c语言中*p=a[i]为啥得不出结果

13天前

#include<stdio.h>

int main()

{

 

int a[5],i;

int *p;

 

for(i=0;i<5;i++)

  scanf("%d",&a[i]);

for(i=0;i<5;i++)

  {

  *p=a[i];

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

  return 0;

 } 

把*p=a[i]换成p=&a[i]就可以了,这是为啥?

https://m.teaku.com/20/1581403757618641.html

网友评论

  • 对于一位数组而言,用指针变量来访问数组元素与数组本身本质上是一样的。但对于指针,要接收数组的首地址,然后按照地址对数组中的元素进行间接寻址。*p表示取出p所指向的内存单元中的内容,需要让指针变量p指向数组的地址&a[i],这样才能可以取出来,而你*p=a[i]表示已经取出来的,没有贮存在p所指向的内存单元中,所以p实际上是个空地址,所以没有输出。而当p=&a[i],当i=0,让p指向的了&a[0]然后,才使p的内存单元中有内容,最后执行*p的时候,才有内容取出

    因此,*p=a[i]不行,而p=&a[i]可以。

    还有问题吗,谢谢采纳