我在这段代码中收到错误"无效的间接"

时间:2015-06-20 04:24:02

标签: c memory dynamic indirection

我正在尝试动态分配一个连续的内存块,存储一些整数值并显示它。

#include<stdio.h>
#include<conio.h>
void main()
{     int i;
      int *ptr;
      ptr=(void *)malloc(sizeof(int)*5); //allocation of memory

      for(i=0;i<5;i++)
              {     scanf("%d",&ptr[i]);
              }    
      for(i=0;i<5;i++)
              {    printf("%d",*ptr[i]); //error is found here``                     
              }
}    }

1 个答案:

答案 0 :(得分:1)

ptr [i] 表示地址(ptr + i)的值,所以* ptr [i]没有意义。你应该删除*

您的更正代码应为:

 #include<stdio.h>
 #include<stdlib.h>
 #include<conio.h>
 int main()
 { 
  int i;
  int *ptr;
  ptr=malloc(sizeof(int)*5); //allocation of memory

  for(i=0;i<5;i++)
          {     scanf("%d",&ptr[i]);    
           }    
  for(i=0;i<5;i++)
          {    printf("%d",ptr[i]); //loose the *
          }
  return 0;
}     //loose extra }