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[];
7:预处理的个人理解
常见的预处理包含:文件包含、条件编译、宏替换、布局控制。 都是#开头
前边三个经常用,布局控制目前还没用到,等用到了再来叭叭。
条件编译,就是在编译器根据预处理命令和条件来判断那一部分编译,哪一部分不编译。
8.unsigned 和signed整形溢出
在做例程的时候遇到了溢出的问题,unsigned如果向下溢出变成最大值。signed不同编译器有不同的处理方式
9.extern 的用法
10.return
这个印象比较深了,return的作用是跳出函数。所以一个函数中可以包含多个return。但是只会返回一个值。