宏在进行编译的阶段会进行替换,宏替换或者是宏展开。带参数的宏,机械的进行展开就可以了。
多维数组在做参数的时候会退化成为一个指针。
指针数组的自我结束能力,指的是最后一个元素为0,用来表示指针已经达到的结尾。
在C语言中‘ ’和0和NULL是同一回事。只是表达的环境不同而已。
知道在什么框架下干的活。
结构体类型定义和结构体变量的定义。
如何定义一个结构体类型。
struct关键字
struct Teacher{
char name[64];
int age;
int id;
};
定义变量的方式:
struct Teacher tea;
这里定义一个数据类型,数据类型是固定大小的内存块的别名。
这里相当于是定义了一个数据类型,然后用这个数据类型来分配变量。
类型的重定义用typedef,结构体可以用typedef来进行重定义。
typedef struct Teacher{
char name[64];
int age;
int id;
} Teacher;
定义变量的方式:
Teacher tea;
用结构体类型定义变量的方式有三种:
定义类型的同时定义变量
定义匿名类型的时候定义变量
用结构体类型来定义变量
初始结构体变量的三种方法:
用结构体定义变量的时候初始化结构体变量
在定义匿名结构体定义结构体变量的时候初始化结构体变量
结构体变量的引用
.操作符是做什么的?有没有操作内存?
.是寻址操作,是计算变量相对于结构体变量的偏移量,没有操作内存,在赋值的时候才操作内存。
通过指针的方式操作内存空间,->
->也是在寻址,是计算变量相对于结构体变量的偏移,计算在CPU中,没有操作内存。
结构体做函数参数的行为。结构体赋值=操作,编译器提供的行为?
编译器提供了简单的=赋值操作。
结构体元素做函数参数,结构体指针元素做函数参数的区别
用元素和用指针是截然不同的。结构体变量做函数参数和结构体指针做函数参数。
结构体做函数参数的基本操作。
数组做函数参数会退化成为一个指针,因此需要将数组的长度给传递过去。
结构体可以和参数结合起来,方便的分配内存空间。
在进行函数调用的时候,如果是在主调函数中分配内存,就使用一级指针,如果在被调用函数中分配内存,就使用二级指针。