变量 数组长度C语言
来源:百度知道 编辑:UC知道 时间:2024/05/26 23:30:59
f(int k,int m)
函数里能不能直接定义数组 int a[m>=k?m:k]
如果不能应该如何改。
函数里能不能直接定义数组 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);
}
数组的长度一定要是常量,这样是不行的