c++ 按键暂停继续 程序_50个C语言/C++程序员必会遇到的疑难解答

本文详细探讨了C++中getchar()和system("pause")两种暂停程序的方法,解释了它们的区别,以及在实际使用中的注意事项。同时,文章涵盖了头文件的作用、void关键字的功能、main函数、变量、printf和fprintf、gets与fgets等C++基础知识,旨在帮助C/C++程序员解决常见的编程疑难问题。
摘要由CSDN通过智能技术生成

1. getchar和system(“pause”)

相同点:都可以实现“暂停”效果

但实际过程,有区别。

getchar()是从输入缓冲区中读取一个字符。如果输入缓冲区(使用scanf输入的任何数据都是先被保存在输入缓冲区中!)中没有任何数据,那么就暂停,直到用户输入任意数据并回车,程序才继续往下执行。使用getchar()时,如果输入缓冲区中还有数据,那么就不能实现暂停效果。

system(“pause”)则与输入缓冲区没有任何关系,会直接暂停程序的执行,直到用户按下任意一个按键(不需要在最后输入回车符),才会继续执行。system(“pause”)还会有自动输出提示信息:“请按任意键继续. . .”而且这个提示信息是固定的,不能修改。

2. 头文件的作用

如果在程序中使用了某个c语言预定了的函数,比如printf, 就需要把这个函数的“函数声明”(相当于函数的“介绍”)包含到这个文件中。而这些函数的声明都已经存放在对应的头文件中,比如printf函数的函数声明在stdio.h, 所以需要在程序中使用 #include

在实际开发中,也会常常定义自己的头文件,用来保存一些函数的函数声明,其他文件如果想使用这些函数,就包含这个头文件。具体用法在项目实战环节再详细介绍。

3. void

作用1:作为函数的返回类型

函数的返回类型为void, 就表示这个函数没有返回值。

作用2:作为函数的参数

函数后面的()用来写参数,如果没有参数,建议写void, 告诉编译器,这个函数没有参数。如果不写,编译器也会认为没有参数。但是可能会告警,因为编译器怕你忘记写参数了,如果写void, 就是明确告诉编译器,这个函数是没有参数的。

作用3:

作为void*, 表示指向任意类型的指针,在指针部分详细介绍。

4. main函数

实际项目中,会很多函数,大项目中有几千甚至几万个函数。main函数是程序的入口,也就是程序运行时,首先从main函数开始执行

5. 变量

变量的存储位置

当程序员定义一个变量比如, char x;这个变量x占用一个字节,但是这个变量的具体存储位置,是编译器来决定的,程序员不能决定。但是程序员可以使用 &x来获得变量x的存储地址。

变量的含义:

学习编程,有一个捷径,就是不要去纠结什么语法知识。二是从解决问题入手。

程序的目的就是为了解决问题的.

如果程序写对了,但是解决不了问题,那这个程序也就是没有任何意义的。

比如拥有一个问题,需要计算两个数的和,也就是做加法。

需要你来设计一个程序,来实现这个加法功能。

那么你就需要使用某个东西,来保存用户输入的两个整数。

用什么来保存呢?

使用“变量”!

需要定义几个变量呢?

至少要定义3个。

分别用来保存用户输入的两个整数,以及他们的和。

int a;

int b;

int s; //计算的结果。

6. printf和fprintf

printf 就是向屏幕打印信息

fprintf是向指定的文件打印信息。而一般的文件,都是保存在磁盘的,也就是硬盘。比如文件 C:/tmp/hello.c

printf其实是fprintf的一种特殊情况,就是把信息打印到一个特殊的文件(标准输出设备),而默认的标注输出设备就是屏幕(控制台的屏幕)

7. gets和fgets

gets和fgets也是类似的。gets是从键盘读取一行字符串。fgets是从指定的文件读取一行字符串。gets是fgets的一种特殊情况,就是向一个特殊的文件读取,这个特殊的文件就是标准输入设备,而默认的标准输入设备就是键盘。

8. 数组的理解

比如每个星期有7天,你准备每天都要去跑步锻炼,计划每天跑步的运动量。

假设:

星期日:3000米,

星期1:5000米

星期2:4000米

星期3:3000米

星期4:1000米

星期5:2000米

星期6:8000米

此时就可以定义一个数组:

int run[7] = {3000, 5000, 4000, 3000, 1000, 2000, 8000};

这个数组的数组名称是run, 包含7个整数。第一个整数用run[0]表示, 只有一个数组用run[6]表示。

这7个整数连续存储在内存中,第一个run[0]的存储地址最小,run[1]紧跟着存储在run[0]后面。

run包含7个成员,每个成员都是一个整数,每个整数占用4个字节,所以run一共占用 4*7=28个字节。所以: sizeof(run) == 28

9. 编译报错-implicit declaration

130c5c161ea9fb906fa0e6d1ea99382a.png

10. if的条件判断

任何if判断语句,都要满足条件为真,才执行

这里的条件为真,不是说其中某个变量的值是真是假,而是指整个表达式的值是否为真。

比如,file的值为NULL(也就是0, 就是假)

if (file) {

//不会执行

}

if (file == NULL) { // 虽然file是假,但是 file == NULL 就是真!

///会执行

}

11. 逻辑值

普通表达式和真假没有关系1+2 和真假无关strcmp(name1, name2)和真假无关,这个函数的值就是一个整数。但是所有比较运算的结果,都是逻辑镇,也就是真或者假比如:1+2 == 3 结果是 真strcmp(name1,name2) == 0 结果是真或者假1+2 > 3 结果是假

12. fscanf

d2ef063138ecc1f8b00eafa2d864925b.png

13. 回车符

是属于文件的格式问题。

当把回车符() 保存为时,这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值