《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函数输入多于一个字符时,只接收第一个字符。

相关文章
|
2月前
|
存储 编译器 C语言
C语言难?深度剖析第一段C语言代码—带你快速入门C语言
C语言难?深度剖析第一段C语言代码—带你快速入门C语言
42 0
|
1天前
|
算法 C语言
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-2
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
1天前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
19天前
|
安全 编译器 C语言
C语言中的const关键字
C语言中的const关键字
16 2
|
25天前
|
JavaScript 前端开发 Java
开发语言漫谈-C语言
C语言是最伟大的开发语言
|
2月前
|
程序员 C语言
在C语言中,typedef是一种用来创建新的数据类型名的关键字
在C语言中,typedef是一种用来创建新的数据类型名的关键字
10 0
|
2月前
|
存储 编译器 C语言
C语言的关键字
C语言的关键字
15 0
|
2月前
|
存储 编译器 C语言
c语言中的关键字
c语言中的关键字
10 0
|
17天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
3天前
|
存储 编译器 C语言
C语言:字符函数 & 字符串函数 & 内存函数
C语言:字符函数 & 字符串函数 & 内存函数
11 2