#include<stdio.h>
#include<string.h>
int main()
{
int b[];
gets(b);
int a[strlen(b)]={0}; //错误的?
return 0;
}
您这样进行定义是错误的。
因为在栈上进行数据定义时,必须编译的时候就能够确定该数据的确切大小。
int b[]; //必须填值
int a[strlen(b)]={0}; //中括号内容的值必须是常数。
如果您需要动态大小的数组,那么应该使用malloc进行动态内存申请,并在使用后用free进行释放。
因为在栈上进行数据定义时,必须编译的时候就能够确定该数据的确切大小。
int b[]; //必须填值
int a[strlen(b)]={0}; //中括号内容的值必须是常数。
如果您需要动态大小的数组,那么应该使用malloc进行动态内存申请,并在使用后用free进行释放。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-10-16
int b[]; 肯定错误呀!定义数组是没有初始化数组的长度。必须是个错误。追问
换成b[20]也是错的 为什么
追答你换成char b[20]试下。。。。
第2个回答 2012-10-16
int b[];此方式属于静态数组,编译时就需要知道数组大小!