《C语言深度剖析》第一章 关键字详解 p3 C语言从入门到入土(进阶篇)(一)

简介: 1.switch case 组合 对于switch && case && break && default 的总结 2.getchar 3.putchar 4.do、while、for 关键字 break && continue 区别 5.goto 关键字 6.void 关键字 6.1 void修饰函数返回值和参数 6.1.2 void用来作为函数返回值 6.1.3 void 作为函数参数 6.2 void 指针 6.3 void * 定义的指针变量可以进行运算操作吗 6.4 void * 用来设计通用接口

1.switch case 组合


switch ( 整型变量 / 常量 / 整型表达式 ){

case var1 :

break ;

case var2 :

break ;

case var3 :

break ;

default :

break ;

}


又有朋友问了,已经有if else为何还要switch case, 其实是因为switch语句也是一种分支语句,常常用于多分支的情况。这种多分支,一般指的是很多多分支,而且判定条件主要以整型为主。而且是指大数据的,用swich case 比 if else 会方便很多。(就是少写很多代码,可以偷懒)


那case和break的作用是什么在switch中?

答案是case是作为判判定功能而break是作为分支功能

即:先从switch()传进去一个数,然后找case进行判断,当然如果没有可以与之判断的case就会走向default。再就是进入case,如果里面没有break,就会往下面的case继续执行,直到遇到break或者结束程序。


如果多个不同 case 匹配,想执行同一个语句,推荐做法:

#include <stdio.h> 
#include <windows.h> 
int main() 
{ 
int day = 6; 
switch (day){ 
case 1: 
case 2: 
case 3: 
case 4: 
case 5:
    printf("周内\n"); 
break; 
case 6: 
case 7: 
    printf("周末\n"); 
break; 
default: 
    printf("bug!\n"); 
break; 
}
    system("pause"); 
    return 0; 
}

结论: case 之后,如果没有 break ,则会依次执行后续有效语句,直到碰到 break


对于switch && case && break && default 的总结


下面给大伙一张之前做的笔记图同时解释:


87.png


1.好像说得很清楚了就不解释了

2.当一个case要执行多条语句时,如果需要在里面定义变量,就需要用{}括起来这一个case语句里面的代码块,或者只写一个函数,然后调用这个函数(就此一条语句),当然后面都要跟上break。(其实个人一致认为break跟不跟完全是无法规定的,都要看具体情况,所以大家自行斟酌)

3.好像也挺清楚的。

4.额.....也清楚哈,不懂私我哈!

5.case后面只能接常量,不能是const修饰的常量,因为其本质还是变量,但是可以用define定义的常量。最后的布局方式就是大家最好按照从小到大的顺序去写case,当然还有一个小技巧就是把常用的case写在前面可以提高程序的效率。


PS:目前了解一下就行

88.png


2.getchar

89.png


头文件:

90.png


作用1:从缓冲区读走一个字符,相当于清除缓冲区。


作用2 : 前面的scanf()在读取输入时会在缓冲区中留下一个字符’\n’(输入完按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,接下来的scanf()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误。


简单说就是从键盘读一个字符进去。下面也可以很好地反应出来:

91.png

92.png


这里中间有两个空行是因为一个是我们回车的时候有一个\n保留了,还一个就是我们程序自己输入的\n。现在我们不带\n

93.png

PS:再一个大家很可能忽视的,键盘输入的内容或者是显示器中打印的内容,全部都是字符!

94.png

printf返回值:返回的是打印字符的个数!(有‘\0’)

95.png96.png


虽然我们输入的是字符,但是会经过这些函数转换为我们想要的数字或其他。(就是%d或者啥的)所以键盘,显示器都称之为字符设备。


总结:

getchar() 用于读取用户从键盘输入的单个字符,它有一个整型的返回值,当发生读取错误的时候,返回整型值 - 1,当读取正确的时候,它会返回用户从键盘输的第一个字符的ASCII码, 当程序调用getchar时.运行程序时 就等着用户从按键输入, 用户输入的字符被存放在键盘缓冲区中.直到用户按回车为 止(回 车字符也放在缓冲区 中),当用户输入回车之后,getchar才开始从输入流中每次读入一个字符,输入的字符不只一个的时候,后续的getchar调用不会等待用户按键, 而直接读取缓冲区中的字符, 直到缓冲区中的字符读完之后,才等待用户按键,getchar函数输入数字也按字符处理,单个的getchar函数输入多于一个字符时,只接收第一个字符。

相关文章
|
12天前
|
存储 程序员 编译器
初识C语言,计算机语言的基石
初识C语言,计算机语言的基石
|
4月前
|
算法 Java 程序员
面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性
【6月更文挑战第15天】面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性。封装可使用结构体封装数据和方法,如模拟矩形对象。继承则通过结构体嵌套实现静态继承。多态可通过函数指针模拟,但C不支持虚函数表,实现复杂。C语言能体现OOP思想,但不如C++、Java等语言原生支持。
58 7
|
4月前
|
C语言 C++ 编译器
【C++语言】冲突-C语言:输入输出、缺省参数、引用、内联函数
【C++语言】冲突-C语言:输入输出、缺省参数、引用、内联函数
【C++语言】冲突-C语言:输入输出、缺省参数、引用、内联函数
|
3月前
|
C语言
|
3月前
|
存储 C语言
C语言中static关键字的作用与用法解析
C语言中static关键字的作用与用法解析
|
4月前
|
存储 C语言
C语言中的typedef关键字:为类型定义新名称
C语言中的typedef关键字:为类型定义新名称
|
4月前
|
C语言
深入探索C语言中的sizeof关键字
深入探索C语言中的sizeof关键字
|
4月前
|
存储 编译器 C语言
C语言中的关键字与标识符详解
C语言中的关键字与标识符详解
|
4月前
|
C语言 C++
【C++语言】冲突-C语言:命名空间
【C++语言】冲突-C语言:命名空间
|
5月前
|
存储 C语言
C语言结构体深度剖析
C语言结构体深度剖析