C语言中的基本数组用法?
|
这就是你们在ANSI-C99中获得数组大小的方式吗?似乎有点笨拙,来自高级语言。
int tests[7];
for (int i=0; i<sizeof(tests)/sizeof(int); i++) {
tests[i] = rand();
}
同样,此分割错误。
int r = 10000000;
printf (\"r: %i\\n\", r);
int tests[r];
运行:
r: 10000000
Segmentation fault
10000000段故障,但100万有效。
我如何从中获得更多信息?我应该检查什么,如何调试这样的东西? C数组有限制吗?什么是细分错误?
没有找到相关结果
已邀请:
6 个回复
感秆暴壳
技巧才能获取数组中的元素数。 至于段错误问题,我猜测您尝试分配10000000 * 4个字节超出了堆栈大小。一条经验法则是,如果您需要数百个以上的字节,请使用
或
动态分配它,而不是尝试创建较大的
变量:
请注意,在大多数情况下,您可以将ѭ9视为数组类型(即您可以对其下标,可以将其传递给需要数组的任何函数,等等),但是它不是数组类型;它是一种指针类型,因此
技巧将不起作用。
蹄寄噬非芹
但是我想您需要的是元素数量,在这种情况下,它将是:
您可以为此编写一个简单的宏:
例如:
掸牛浓疗
黎喊病
但不是
由于我们在编译时就知道数组的大小,因此获取数组的大小往往是微不足道的。我们不需要
,因为我们可以通过查看声明来确定尺寸。 C ++提供了堆数组,如
但是由于这涉及指针而不是堆栈数组,因此我们必须将大小存储在我们手动传递的变量中。
畦桨存灯
如果打印出负数-这就是问题所在。
茂坦湿床够