文章目录
while do for基本解释
**while
条件初始化
while(条件判定){
业务更新条件更新
}
for
for(条件初始化; 条件判定; 条件更新){
业务代码
}
do while 条件初始化do{
条件更新
}while(条件判定);
**
do while 适用于那种游戏界面呀,一上来无论如何先让你来一次的场景,对于这样的有奇效
3个流
接下来我们说一下三个流
任何C程序,在运行之前都会默认代开三个输入输出流
stdin 标准输入流 ——键盘
stdout 标准输出流——显示器
stderr 错误输出流——显示器
printf本质是向显示器写数据,scanf本质是从键盘读入数据
getchar
getchar的意思是从输入流中获得一个字符,本质上这个stdin是文件指针
但是他的返回类型为啥是int能,获取字符不应该是char吗?
这里解释一下:char类型范围是 [0~255] 在这个区间的都是合法的范围,比如返回类型就是char,但是如果要是返回的值要是大于这个范围,就会发生呢截断,返回的内容和你想要的就不一样了,所以返回的类型大一些
讲一下getchar一些该注意的点
--------------------------------------------------------------------------------------------------
讲到这我们来了聊一下printf 和 scanf
证明:
这一点一定要明确!
这时就有人问了,我要用scanf输入12345,变量里面放的还是字符吗?
对滴!!!scanf标准输入,你在输入了之后,他会自动把他改为整型或者其他放到变量里
键盘输入的内容或输出的内容,或者向屏幕打印的,都是字符!!!!!!!!!!!
故键盘,屏幕又被称为字符设备
break
#include<stdio.h>
int main(){
while (1){
char c = getchar();
if ('#' == c){
break;
}
printf("%c", c);
}
return 0;
}
输入井号,break就直接跳出循环
continue
continue跳出本次循环
小节:continue在while和do被执行时都是跳到,条件判定哪里
这里一定要明确
我们在来看for循环中的continue
注意:continue在for循环中是跳转到条件更新哪里,可不是条件判定哪里,要是跳到条件判定哪里,就是死循环了
goto
基本用法:
goto 模拟实现循环
int main(){
int i = 0;
next:
if (i < 10){
i++;
printf("[i] goto 模拟循环\n");
goto next;
}
//goto next;在这也是死循环,不满足if,也会跳到这
return 0;
}
goto 不可以跨函数调用。
void
void是否可以定义变量呢
是不行的
void在vs中显示占内存大小是0字节,所以说肯定是不能定义变量了,
定义变量的本质就是开辟空间,在理论上说你都没开辟空间,肯定不能开定义变量了,在linux上是开辟1字节的空间,也仅仅是用来看作为一个占位符来看待的
哪void可以定义指针吗?
可以的!!!因为编译器能识别出viod,的指针能占多少个字节, 但是void类型的指针不能进行加减常数操作!!!
**viod指针是可以接收,(常用)别的类型的指针的,也可以被别的指针接收**
void作为函数返回值
但是这样就不行了!!!
void本就是不用返回数值的,你在用一个整型接收,这不就矛盾了吗
那要是函数返回值啥也不加行吗?
也是没问题的
**总结:1.C语言中函数可以不带返回值,返回值默认是int型
2.viod修饰函数返回值a:占位符,让用户明确不用返回值;
b:告知编译器这个返回值无法接受
3.void充当函数形参是,告知用户或编译器不需要传递参数
4.void*可以接受任何类型的指针,可以被任何常用的指针接收
**