如何将1到指定整数的所有数值依次存入C语言数组
你代码的问题点
- 数组越界访问:C语言中长度为10的数组
int array[10]的合法下标范围是0~9,你在while条件中访问array[10]属于越界读取,这块内存不属于当前数组,值是未定义的,无法作为循环终止的判断依据。 - 循环逻辑错误:没有控制
array_finished的上限,当它超过9之后,写入array[array_finished]会越界修改栈上其他内存,属于未定义行为,这也是你看到奇怪输出的核心原因之一。 - 打印逻辑错误:
printf("%d", array)中array是数组名,会自动退化为指向数组首地址的指针,你用%d格式符打印指针值,输出的自然是无意义的内存地址数值,想要输出数组的每个元素需要遍历数组逐个打印。
正确实现代码
#include <stdio.h> int main() { // 可以修改n的值来生成对应长度的1~n数组 const int n = 10; int array[n]; // 填充数组 for(int i = 0; i < n; i++){ array[i] = i + 1; } // 按要求格式打印数组 printf("int array[] = {"); for(int i = 0; i < n; i++){ if(i > 0) printf(", "); printf("%d", array[i]); } printf("}\n"); return 0; }
运行上述代码会直接输出你需要的int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}格式的结果。
内容的提问来源于stack exchange,提问作者RandomCodeEnjoyer
相关产品推荐
相关产品推荐

