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好吗