C 我在这段代码中得到的错误是;“无效间接寻址”;

C 我在这段代码中得到的错误是;“无效间接寻址”;,c,memory,dynamic,indirection,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]

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

#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``                     
              }
}    }
#包括
#包括
void main()
{int i;
int*ptr;
ptr=(void*)malloc(sizeof(int)*5);//内存分配

for(i=0;iptr[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 }
#包括
#包括
#包括
int main()
{ 
int i;
int*ptr;
ptr=malloc(sizeof(int)*5);//内存分配

对于(i=0;我不会抛出malloc标准警告,并检查内存分配是否成功
intmain(void)
请,除非
conio.h
拉入声明
malloc()的头
你应该
#包括
无效主区
应该是
int主区
@MattMcNabb我不明白为什么这是一种强迫。请你解释一下>谢谢@MattMcNabb好吗