C中的基本数组用法?
发布时间:2020-12-16 09:34:08 所属栏目:百科 来源:网络整理
导读:这是你们如何获得ANSI-C99数组的大小?看起来有点像笨笨来自高级语言. int tests[7];for (int i=0; isizeof(tests)/sizeof(int); i++) { tests[i] = rand();} 此分段也出现故障. int r = 10000000;printf ("r: %in",r);int tests[r]; 运行: r: 10000000Seg
这是你们如何获得ANSI-C99数组的大小?看起来有点像笨笨来自高级语言.
int tests[7]; for (int i=0; i<sizeof(tests)/sizeof(int); i++) { tests[i] = rand(); } 此分段也出现故障. int r = 10000000; printf ("r: %in",r); int tests[r]; 运行: r: 10000000 Segmentation fault 10000000 seg故障,但1000000工作. 如何从中获得更多信息?我应该检查什么以及如何调试这样的东西? C阵列有限制吗?什么是分段错误? 解决方法
C中的数组不知道它们有多大,所以是的,你必须使用sizeof array / sizeof array [0]技巧来获取数组中的元素数量.
至于段错误问题,我猜你通过尝试分配10000000 * sizeof int字节来超过你的堆栈大小.根据经验,如果您需要超过几百个字节,请使用malloc或calloc动态分配它,而不是尝试创建一个大的自动变量: int r = 10000000; int *tests = malloc(sizeof *test * r); 请注意,在大多数情况下,您可以将测试视为数组类型(即,您可以将其下标,可以将其传递给任何需要数组的函数等),但它不是数组类型;它是一个指针类型,因此sizeof tests / sizeof tests [0]技巧将不起作用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |