读书人

很简单的一个C语言有关问题

发布时间: 2014-01-01 18:12:08 作者: rapoo

很简单的一个C语言问题,救命啊!!!
void main()
{ int N,i,j;
scanf("%d",&N);
int r_color[N]={0};

为什么这样会报错啊,我想先输入N,再定义一个数组并把N赋为数组的长度


[解决办法]
我的理解是你在定义数组的时候 必须给数组定下分配多少空间 不能是一个变化的值。
要么就动态分配内存 malloc()
[解决办法]
我的理解是你在定义数组的时候 必须给数组定下分配多少空间 不能是一个变化的值。
要么就动态分配内存 malloc()
[解决办法]
引用:
int r_color[N]={0};
写成int r_color[N]即可。

当你将N作为参数的时候,是无法进行初始化的,尤其是用在函数里。
[解决办法]

int N, *color;
if (1 == scanf("%d", &N) && N > 0)
{
color = (int*)calloc(N,sizeof(int));
}

[解决办法]
其实你想用变长数组吗
[解决办法]
可以定义指针数组来分配二维数组:
int a;
int (*)p[2];
a=p[2][N];
[解决办法]
说错了 ,是数组指针来分配二维数组
[解决办法]
int a;
int(*p)[2];
a=p[0][N];
[解决办法]
先弄懂:编译器,运行期。

读书人网 >C语言

热点推荐