即使未使用malloc
,数组是如何创建的?
#include <stdio.h>
#include <stdlib.h>
int main() {
int n,i,*ptr,sum=0;
printf("Enter number of elements: ");
scanf("%d",&n);
printf("Enter elements of array: ");
for(i=0;i<n;++i)
{
scanf("%d",ptr+i);
sum+=*(ptr+i);
}
printf("Sum=%d",sum);
free(ptr);
return 0;
}
答案 0 :(得分:2)
数组未被创建&#34;。它被宣布。然后它没有被定义或初始化。你用吧。
未定义的行为。
如果您使用更严格的编译器,那么您将得到:
warning: ‘ptr’ may be used uninitialized in this function [-Wmaybe-uninitialized]
因此它实际上不是动态。
我认为更大的问题是free(ptr)
会发生什么:
可能但也是未定义的行为。由于传递未初始化的指针,因此指针的值不明确。这可能是偶然NULL
但不限于此。
大局:
访问任何未初始化的变量会导致未定义的行为。
修改强>
OP没有声明数组,而是一个整数指针。