1:宏定义不加分号
#define ZYY 1;
#define ZYY 1
记住啊,宏定义后面没有‘;’
2:char类型变量既可以存放字符型常量又可以存放整形常量
because:
在 C 语言中,char
类型用于存储字符(character),如英文字母或标点符号。严格来说,char
也是整数类型(integer type),因为char
类型存储的实际上是整数,而不是字符。计算机使用特定的整数编码来表示特定的字符。
因此,char
类型既可以存储字符型常量,又可以存储整数型常量。
存储字符型常量:
char c=‘A’;
存储整型常量:
char c=65;
3:关于全局变量和静态变量
芯片中的内存区域分为栈区、堆区、全局/静态存储区、常量存取区、代码区和寄存器区。
本文对全局/静态存储区进行总结。
全局变量以及static修饰的静态变量都存储在这个区域,由于同属于一片区域,所以其性质是一样的,那他们有什么性质呢?其实就是系统给全局变量和static修饰的静态变量在其生命周期的这段时间分配了固定的内存,每次程序需要用到该变量的时候,程序就会该内存地址调用该变量(类似于指针)。
extern修饰全局变量时它可以扩展全局变量的作用域。比如说在1.c中定义了一个全局变量a,在2.c文件中用extern对a变量进行声明,那么全局变量a的作用域就成了1.c文件和2.c文件。并且当1.c中的函数改变a的值时,2.c再调用a时为a修改过的值。
4:作用域与生命周期
作用域:指的是一段范围,如果非要在这个范围前加个定语的话,我希望是代码。针对编译和链接过程。
生命周期:说白了,我的理解是标识符具有存储空间的一段时间段。此阶段针对的是程序的执行过程。
其实我个人觉得这两个概念中会存在某种联系,也可能是现在造诣太浅会这么理解。作用域就是我们在编写代码的时候会考虑的东西,生命周期是我们编写完代码,执行代码的时候要考虑的东西。
5:枚举
上链接:C语言枚举详解-CSDN博客
主要有以下几点吧:
第一,枚举就是特殊的宏定义,用来定义一些有联系的符号。
第二,首先进行的是类型定义,定义一种类型,就像int,char一样。然后进行变量的声明,根据你所创建的枚举变量类型来声明变量,就像int a一样。最后是定义变量就像int a;a=1;或者int a=1;一样。枚举变量只能接收枚举类型中定义好的符号值。
6:指针
让你不再害怕指针——C指针详解(经典,非常详细)-CSDN博客
先上两个链接吧,还没咋用到指针,所以现在对指针的理解也比较浅薄
目前总结俩点
①分清指针类型、指针所指向的类型、指针的值和指针本身所占据的内存区域。
②数组名本省也是指针,表示该数组的第一个数的起始地址。比如制作了一个函数void mmm(int *p) 再用它的时候,就可以直接mmm(str) int str[];
③函数名即代表函数的首地址。
④函数指针:其本质是一个指针变量,该指针指向这个函数。函数指针就是指向函数的指针。
声明格式:类型说明符 (*函数名)(参数)
在函数声明的基础上加了个(*)参考函数指针和指针函数用法和区别-CSDN博客
7:预处理的个人理解
常见的预处理包含:文件包含、条件编译、宏替换、布局控制。 都是#开头
前边三个经常用,布局控制目前还没用到,等用到了再来叭叭。
条件编译,就是在编译器根据预处理命令和条件来判断那一部分编译,哪一部分不编译。
8.unsigned 和signed整形溢出
在做例程的时候遇到了溢出的问题,unsigned如果向下溢出变成最大值。signed不同编译器有不同的处理方式
9.extern 的用法
10.return
这个印象比较深了,return的作用是跳出函数。所以一个函数中可以包含多个return。但是只会返回一个值。
11.回调函数
回调函数是一个通过函数指针调用的函数。建立函数、建立函数指针、建立将函数指针作为输入变量的函数。
回调函数是建立函数。
回调函数的出现,使得函数可以作为函数的输入参数,增加了编程的灵活性。
12 .qsort函数
比较重要的是参数中的最后一个函数指针值,通过此,了解了函数指针,回调函数,void*的用法,只是就是这样,可以由一个点牵出来一整条线。
C语言中的qsort函数(详解)_c语言中qsort函数-CSDN博客
【C语言】qsort()函数详解:能给万物排序的神奇函数-CSDN博客 这个参考比较复杂详细,还没有仔细看完,有时间有机会来看
13.C语言中void*详解及应用
void在形容参数或者返回值时,表示是空,既没有。而当void用来形容指针的时候,void指针可以指向任意类型的数据,就是说可以用任意类型的指针对void指针赋值。即可以将 void*p中的void看成任何对于参数形容的关键字。
C 语言中 void* 详解及应用 | 菜鸟教程 (runoob.com)
14. C语言中const关键字的用法
常量指针是指指向的内容是常量。1 不能通过这个指针改变变量的值,但是可以通过其他引用来改变变量的值;2 常量指针指向的值不能改变,但是这并不意味着指针本身不能改变。
其实要明白一个道理,const是constant的缩写,const就是把一个函数变量或者其他变成常量,挨着谁近,修饰的就是谁。
15.用typedef定义结构体
typedef struct Person
{
char name[16];
int age;
}per;
用typedef定义结构体struct Person之后,再给struct Person取一个外号,就叫做per,之后可以用它的名字或者外号声明结构体变量。它的名字和外号就变成了结构体关键字(同int char等关键字一个意思)。之后便可以用此结构体关键字去声明结构体变量。
【C语言】结构体类型的定义与使用_c语言结构体定义和使用-CSDN博客
这就是结构体变量和普通变量声明的不同之处,结构体变量需要先定义结构体关键字,然后再用结构体关键字去声明结构体变量,而普通变量本来就有已经设置好的变量关键字,直接使用声明变量即可。
16.布尔表达式
要明白布尔表达式,首先要知道布尔量,之前也一直遇到布尔量,但是没有明明白白的查资料并且总结过,在这里总结一下。
布尔量是用于表示两种可能状态的变量:真(true)-1;假(false)-0。
布尔表达式就是运算结果为布尔量的表达式,比如说:条件判断、与或非运算等等。
17.断言
看百度的解释,其实说白了,在编程中,断言就是判断某个条件是否成立,如果成立,执行什么什么操作。
一些简单的小概念,不弄明白就总心里刺挠。
18.三元运算符
19.tolower函数
20.strlen函数
strlen(C/C++语言函数)_百度百科 (baidu.com)
计算给定字符串的长度,字符串的结束标识符是'\0',计算‘\0'之前的字符串数,说这么多其实就是计算字符串中有几个字符。
想起sizeof了,下边写一些。