代码编译无报错但运行崩溃,求排查C语言数组输入输出问题
问题分析与解决
错误原因
程序崩溃的核心问题是scanf函数的参数传递错误:
scanf的第二个参数必须传入变量的内存地址,用于存储用户输入的值。- 你直接传入了
marks[0]、marks[1]、marks[2],这些是数组元素的未初始化随机值,而非地址。这会导致scanf尝试写入非法内存区域,触发程序意外终止。
另外还有个细节问题:后两个输出语句的描述有误,都写了"first array",应该对应修改为"second"和"third"。
修正后的代码
#include<stdio.h> #include<conio.h> int main(){ int marks[3]; printf("enter number for first array\n"); scanf("%d", &marks[0]); printf("enter number for second array\n"); scanf("%d", &marks[1]); printf("enter number for third array\n"); scanf("%d", &marks[2]); printf("the value of first array is %d\n", marks[0]); printf("the value of second array is %d\n", marks[1]); printf("the value of third array is %d\n", marks[2]); return 0; }
补充说明
- 给数组元素添加
&取地址符后,scanf就能正确将输入值写入对应的数组元素内存中。 - 加入换行符
\n可以让输入提示和输出内容更清晰,避免排版混乱。
内容的提问来源于stack exchange,提问作者Tushar Kumain
相关产品推荐
相关产品推荐

