
C语言中定义一维数组
#include<stdio.h>#include<string.h>intmain(){intb[];gets(b);inta[strlen(b)]={0};//错误的...
#include<stdio.h>
#include<string.h>
int main()
{
int b[];
gets(b);
int a[strlen(b)]={0}; //错误的?
return 0;
} 展开
#include<string.h>
int main()
{
int b[];
gets(b);
int a[strlen(b)]={0}; //错误的?
return 0;
} 展开
3个回答
展开全部
您这样进行定义是错误的。
因为在栈上进行数据定义时,必须编译的时候就能够确定该数据的确切大小。
int b[]; //必须填值
int a[strlen(b)]={0}; //中括号内容的值必须是常数。
如果您需要动态大小的数组,那么应该使用malloc进行动态内存申请,并在使用后用free进行释放。
因为在栈上进行数据定义时,必须编译的时候就能够确定该数据的确切大小。
int b[]; //必须填值
int a[strlen(b)]={0}; //中括号内容的值必须是常数。
如果您需要动态大小的数组,那么应该使用malloc进行动态内存申请,并在使用后用free进行释放。
展开全部
int b[]; 肯定错误呀!定义数组是没有初始化数组的长度。必须是个错误。
追问
换成b[20]也是错的 为什么
追答
你换成char b[20]试下。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int b[];此方式属于静态数组,编译时就需要知道数组大小!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询