1.常量定义,不可修改:
①宏定义常量(推荐) #define PI 3.14159
②普通定义常量(不安全) ,const int a=5;
2.格式化输入输出
①浮点型保留2位小数使用 printf("price==%7.2f",price); %7.2f为占位符 7表示输出字符占七个位置,2表示2位小数
②左/右对齐 printf("result==%-5d",result); -表示左对齐 不写表示右对齐
3.有符号(signed)和无符号区别:
①有符号关键字一般可以省略 signed int a=-10/10;可以是正数也可以是负数
②无符号的只能用正数
4.十/八/十六进制定义
int a =10;
int b=01234;(不能出现超过8的数字)
int c=0xAd;
5.sizeof(int/变量名) 计算数据类型在内存中占的字节大小
6.二维数组
①定义 int arr[2][3]= {{1,2,3},{4,5,6}}; 2:表示行 3:表示列
int arr[2][3]= {1,2,3,4,5,6};
int arr[][3]= {1,2,3,4,5,6,7};
7.EOF和feof()区别
①EOF
是不可输出字符,因此不能在屏幕上显示。由于字符的ASCII
码不可能出现-1
,因此EOF
定义为-1
是合适的。当读入的字符 值等于EOF
时,表示读入的已不是正常的字符而是文件结束符,但这适用对文本文件的读写。
②C提供了一个feof()
函数,可以用它来判断文件是否结束。在二进制文件中,信息都是以数值方式存在的。EOF
的值可能就是 所要处理的二进制文件中的信息。
8.typedef用法
①定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:
char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针 和一个字符变量;
以下则可行:
typedef char* PCHAR; // 一般用大写
PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针
虽然:
char *pa, *pb;
也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的方式更省事。
②对结构体中进行重命名 声明struct新对象时,必须要带上struct,即形式为: struct 结构名 对象名
struct student{
char name[20];
char sex[2];
}stu;
声明一:struct student st; 声明二:stu st;
9.Visualstudio2017快捷键
①注释:Ctrl + K,Ctrl + C :注释选定行(按住Ctrl,先按K再按C)
②取消注释:Ctrl + K,Ctrl + U :取消选定行的注释(按住Ctrl,先按K再按U)
③ 删除光标所在行: Ctrl + L
④代码智能提示:Ctrl + J 或者 Alt+→
⑤Ctrl + K,Ctrl + D :正确对齐所有代码(按住Ctrl,先按K再按D)
10.字符串读取
char* ad = "hello world";
//读取内存地址
printf("%p\n", ad[2]);
//读取从下标2开始到结束的字符
printf("%s\n", &ad[2]);
11.strlen获取字符串长度
12.Windows下gcc编译环境配置,安装qt,并配置对应环境变量即可。
13.void使用①函数参数为空,定义函数时,可以用void修饰②函数没有返回值③不能定义void类型的普通变量,无法确认类型,不用类型分配空间不一样④可以定义void* p;32位永远为4byte,64位为8byte
14.分文件时,防止头文件重复包含 #pargma once
15.c语音四区:栈(使用完就释放),堆(需要程序猿手动释放),全局区(包含:文字常量区,全局变量区,静态变量区等),代码区。
16.字符数组以'\0'结尾
17.指针:内存的单元地址。