一:指针
1、关于指针的含义---粗略
例如:int a=10;
int* p=&a;
这里的*,是说明p是指针变量,int 说明p是指向的对象是int类型的
*p=20, 这里的*是解引用符,意思是通过p中存放的地址,找到p所指向的对象,*p就是p指向的对象
2、关于指针的大小
指针变量的大小取决于地址存放所需要多大的空间
32位机器上面的地址:32bit----4字节,所以指针变量的大小是4字节
64位机器上面的地址:64bit----8字节,所以指针变量的大小是8字节
例如:
int *p1; char *p2; float *p3; double *p4; printf("%zu\n", sizeof(int *)); printf("%zu\n", sizeof(char *)); printf("%zu\n", sizeof(float *)); printf("%zu\n", sizeof(double *));
结果就是:
8
8
8
8
二:关键字
define-----预处理指令,不是关键字
三:循环
1、if-else
如果没有{}这个的话,else与最近的if进行匹配,例如:
#include <stdio.h> int main() { int a = 0; int b = 10; if (a == 1) printf("congratulations!"); if (b == 10) printf("good"); else printf("bad"); printf(""); return 0; }
结果是:good
然而我想要的结果不是这个,所以需要一个大括号来进行相对应的匹配
1 #include <stdio.h> 2 int main() 3 { 4 int a = 0; 5 int b = 10; 6 if (a == 1) 7 { 8 printf("congratulations!"); 9 if (b == 10) 10 { 11 printf("good"); 12 } 13 } 14 else 15 { 16 printf("bad"); 17 } 18 printf(""); 19 return 0; 20 }
这次代码的结果就是我想要的:bad
2、判断小提示
建议需要用到判断的时候,能将数字放在左边,变量放在右边,例如:
1 if (1 == a) 2 { 3 printf("congratulations!"); 4 if (10 == b) 5 { 6 printf("good"); 7 } 8 }
当然了,我之前的代码就是不大好,没有这样做,如果粗心的话,少了一个等号啥的,就可以报错了(前提条件下:左边是变量)
3、switch-case
这个语句可以嵌套,一个break只能跳出当前的switch-case语句;如果没有break的话,会找到符合条件的case语句下面,之后一直运行,直到之后的全部运行完成
4、字符的输入
当希望从键盘上面输入一个字符的时候,可以用到这个函数-----getchar()来进行输入,但是这个函数和库函数里面的scanf()函数差不多,这个两个函数在输入的时候,都需要把键盘里面的数据放入缓存区内部,就像下面图片的内容:
scanf() | 缓存区 | 键盘 |
getchar() | 缓存区 | 键盘 |
这上面的表格就是,从键盘上面输入,进入缓存区,之后就是这两个可以从缓存区来获得数据,但是这两个获取数据的多少不大相同,就比如下面的一个例子:
1 #include <stdio.h> 2 int main() 3 { 4 char passward[20] = {0}; 5 printf("请输入密码:>"); 6 scanf("%s", passward); 7 8 // getchar();//粗略的把换行符获得,只是单个单词/词语,如果想要一行的话,就会出现错误 9 int ch = 0; 10 while ((ch = getchar()) != '\n') 11 { 12 ; 13 } 14 /* 15 这里是每次循环都会从缓存区内取出下一个字符,并赋值给ch,循环体内是空字符,所以这个循环只有读取与丢弃,不做任何处理,直到这个循环遇到 16 换行符'\n',这个循环才会直接退出。原因是:这个无论是scanf还是getchar,都需要把从键盘里面获取的数据,放置到缓存区内,包括换行符而 17 getchar遇到换行符'\n',也会执行换行符的操作,所以,接下来的操作可能会受到影响,故希望运用一个东西来把这个问题给处理了,所以可以用到 18 while这个空循环 19 */ 20 printf("请确认密码:Y/N:>"); 21 char ret = getchar(); 22 if ('Y' == ret) 23 { 24 printf("yes\n"); 25 } 26 else 27 { 28 printf("no\n"); 29 } 30 31 return 0; 32 }
注:这里的一些注释可能有些冗杂,见谅
最后,希望lol能有个冠军,今年the shy回归,希望能那个冠军下来,今天早上的blg尽力了,但是奈何飞科的加里奥摧毁了全华班夺冠的希望,破损了,感觉机会不是很大了,毕竟飞科都28了,但是加油呀,大家
标签:10,缓存,int,重温,写写,printf,天开,指针,getchar From: https://www.cnblogs.com/xiejinghao/p/18523212