目录
一、变量
二、常量
三、字符串
四、选择语句
五、循环语句
六、函数
七、数组
八、操作符
九、常见关键字
十、define定义常量和宏
十一、指针
十二、结构体
一、变量
1.变量类型所占字节
char :1个字节
*(即指针变量): 4个字节/8个字节(在不同(32位/64位)编译器上不同)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节/8个字节(规定:sizeof(long)>=sizeof(int)即可,在不同(32位/64位)编译器上不同)
long long: 8个字节
unsigned long: 8个字节
2.局部变量和全局变量
当局部变量和全局变量名字冲突时,局部优先
3.scanf()和scanf_s()
(1)scanf():使用时在第一行或在*newc++ file.cpp文件中加
#define _CRT_SECURE_NO_WARNINGS 1
(2)scanf_s():传入一个和参数有关的大小值,避免引用到不存在的元素,防止hacker利用原版的不安)全性(漏洞)黑掉系统-->更安全
切记键盘输入是要少敲一位字符,因为数组最后一位要放结束符
例:char[20]-->scanf_s("%s",d,20);//表示最多取19个字符
键盘响应输入的问题
第一种情况:
当我们scanf_s("%d%d%d",a,b,c);
如果你在键盘上输入了1 2 3(1空格2空格3),那么第一个空格就被当作字符了,要用回车来输入,键盘的按键顺序就是:1 Enter 2 Enter 3 Enter。
第二种情况:
当我们scanf_s("%d,%d,%d",a,b,c);
这个时候我们就需要用逗号隔开,比如想给a输入1,b输入2,c输入3。键盘的按键顺序就是:1 逗号 2 逗号 3 Enter
4.extern
在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。
(1)extern修饰变量的声明。
举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。能够被其他模块以extern修饰符引用到的变量通常是全局变量。还有很重要的一点是,extern int v可以放在a.c中的任何地方,比如你可以在a.c中的函数fun定义的开头处声明extern int v,然后就可以引用到变量v了,只不过这样只能在函数fun作用域中引用v罢了,这还是变量作用域的问题。对于这一点来说,很多人使用的时候都心存顾虑。
//源.c文件 int x=1;
//test.c文件
extern int x;
int main()
{
return x;
}
(2) extern修饰函数声明。
从本质上来讲,变量和函数没有区别。函数名是指向函数二进制块开头处的指针。如果文件a.c需要引用b.c中的函数,比如在b.c中原型是int fun(int mu),那么就可以在a.c中声明extern int fun(int mu),然后就能使用fun来做任何事情。就像变量的声明一样,extern int fun(int mu)可以放在a.c中任何地方,而不一定非要放在a.c的文件作用域的范围中。对其他模块中函数的引用,最常用的方法是包含这些函数声明的头文件。
(3) 此外,extern修饰符可用于指示C或者C++函数的调用规范。
比如在C++中调用C库函数,就需要在C++程序中用extern “C”声明要引用的函数。这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同。
1.字面常量
2.const 修饰常变量
const int n=10;//n不能再被重新赋值
int arr[n]={0};//n为变量,error
3.#define定义的标识符常量
#define MAX 10000
int main()
{
//MAX=100;//error!不可以修改值的大小
int n=MAX;
printf("%d",n);
}
4.枚举常量
用于可以一一列举的常量
关键字:enum
#includeenum SEX { //这种枚举类型的变量的未来可能取值,值默认从0开始,不可以修改 MALE, FEMALE, SECRECT }; int main() { enum Sex s=MALE; //MALE=3;//error printf("%dn",MALE); printf("%dn",FEMALE); printf("%dn",SECRECT); return 0; }
输出:
三、字符串1.定义方式
char arr[]="hello";
2.结束标志
字符串的结束标志是一个 的转义字符,在计算字符串长度时 是结束标志,不算做字符串内容。
3.字符串与字符数组
char arr1[]="abc";
char arr2[]={'a','b','c'};
//打印
printf("%sn",arr1);
printf("%sn",arr2);
输出结果;
arr1在内存中的内容:a b c arr2在内存中的内容:a b c (其余为乱码)
printf("%dn", strlen(arr1));
printf("%dn", strlen(arr2));
输出结果:
arr1的长度为字符个数 arr2的长度为随机值
4.转义字符
转变了字符原来的意思
| 转义字符 | 意义 |
| a | 响铃(BEL) |
| b | 退格(BS) ,将当前位置移到前一列 |
| f | 换页(FF),将当前位置移到下页开头 |
| n | 换行(LF) ,将当前位置移到下一行开头 |
| r | 回车(CR) ,将当前位置移到本行开头 |
| t | 水平制表(HT) (跳到下一个TAB位置) |
| v | 垂直制表(VT) |
| \ | 代表一个反斜线字符''' |
| ' | 代表一个单引号(撇号)字符 |
| " | 代表一个双引号字符 |
| ? | 代表一个问号 |


