如果你刚入门,请检查:
scanf("%d",&i)有没有加上“&”号,scanf必须在变量前加“&”(取地址符)。
如果没有加&, scanf会把变量当作地址来用,而你的程序中又没有以变量为地址的变量,操作系统不允许程序读写程序规定范围以外的空间。出于安全起见,操作系统将其紧急中止。就发生了“***.exe已停止工作”的效果。
如果你正在学习数组,请检查:
数组是否越界。定义为int a[10]的数组,如果写a[10]=0; 相当于对a数组里的第11个元素赋值。事实上,a数组里并没有第11个元素。如果该元素的位置指向一个程序以外的内存,操作系统同样会果断将其终止。
如果你正在学习指针,请检查:
指针是否赋值;
在给指针赋值时,有没有在非指针变量前加取地址符“&”;
int * p = &i //正确!
int * p = i //错误!
这与在sccanf里没有加上“&”号的原因大致相同。
指针问题属于程序逻辑错误,很多时侯编译器只会给你一个警告。要注意警告发生的位置自己是否有把握。如果你多次编译或忽视编译警告而进行链接,编译器会认为你对这些警告是有把握的,完全地信任了你,也就没有警告了。
getchar()getchar 的用途是从从标准输入流读取一个字符,读回车符时退出
getchar()永远只向缓存中输入一个字符,
getchar()的用法很多;
一种就是清空回车符 这种情况一般发生在在循环中涉及到输入的情况
还有一种是某些编译平台(IDE)在运行程序时并没有在程序运行后给人看结果的时间 这时候 在程序最后加上getchar()就能造成程序的暂停 给程序员度结果的机会
用getchar时,在键盘上按一个字符后,要按回车才能读取进去;用getch时,在键盘上按一个字符马上就被读取进去,不用按回车,因此可以作为“按任意键继续”的执行语句。
system("pause")
使用它得加个头文件#include<stdlib.h>
system就是调用从程序中调用系统命令(和shell命令)。
system("pause")就是从程序里调用“pause”命令;
而“pause”这个系统命令的功能很简单,就是在命令行上输出一行类似于“Press any key to exit”的字,等待用户按一个键,然后返回