#include<stdio.h>
#include<stdlib.h>
int main()
{
int *ptr;
int n,i=3;
printf("Enter number of elements you want in array:");
scanf("%d",&n);
ptr=(int *)malloc(n*sizeof(n));
if(ptr=NULL)
{
printf("Memory Not Allocated!!");
return 0;
}
else
{
printf("Memory allocation succesful\n");
int *arr;
printf("write elements here\n");
for(arr=ptr;arr<ptr+n;arr++)
{
scanf("%d",arr);
printf("Hello world");
printf("\n");
}
for(arr=ptr;arr<ptr+n;arr++)
{
printf("%d",*arr);
}
free(ptr);
return 0;
}
}
每当我运行此代码以便在输入时它停止工作。所以我稍后在一个在线编译器中检查过,它给出了Segmentation Fault。
请帮帮我!
答案 0 :(得分:1)
这一行:
if(ptr=NULL)
应该是:
if(ptr==NULL)
否则,ptr
的值为NULL
,ptr=NULL
的值为false。因此,在将ptr
分配给NULL
后立即运行 else子句。
另一件事,为了提高for循环的可读性,这更具可读性:
for(int i = 0; i < n; i++)
{
scanf("%d",&ptr[i]);
for
语句是说loop n times
的标准。使用&ptr[i]
(或ptr+i
)可以更明显地引用哪个地址。