变量 数组长度C语言

来源:百度知道 编辑:UC知道 时间:2024/05/26 23:30:59
f(int k,int m)

函数里能不能直接定义数组 int a[m>=k?m:k]

如果不能应该如何改。

不可以的,C语言规定只能用常量定义数组长度
不过可以这么使用
定义一个足够长的数组,比如100,然后k和m比完以后,用k-1或者k-2作为数组的上界就可以了

首先定义数组大小的只能是常量,变量是不行的。你只能定义一个足够大的数组,然后以m和k来作限制了。

可以用动态内存来为数组分配空间:

#include <malloc.h>
#include <stdio.h>

void f(int k, int m)
{
int i, size = m >= k ? m : k;
int* a = (int*)malloc(sizeof(int)*size);

if( a == NULL )
printf( "Insufficient memory available\n" );
else
for(i = 1; i <= size; ++i)
{
a[i] = i;
printf("%d ",a[i]);
}

free(a); /*记住要释放掉分配的内存,否则内存泄露*/
}

int main()
{
f(3,5);
}

数组的长度一定要是常量,这样是不行的