学习杂记(三)c语言

    xiaoxiao2021-04-14  30

    数组:一次记录大量信息的方式

    特点:

    1,所有的变量类型一致

    2,数组是有顺序的,数组元素有已知的顺序

    3,数组名为编号为0的元素的地址

    数组的初始化:

    按照顺序进行初始化,如果只初始化部分元素,后边初始化为0;若无初始化,则为随机数

    注意:c语言不对数组进行边界检查

        数组指针是指针变量可以被赋值,arr是一个地址不可以被赋值

       数组作为函数参数时,传递的是0元素的地址,而不是整个数组

    二维数组:一维数组的数组

    maxtrix[i] -> *(maxtrix+1)   maxtrix[1][2] --> *(*(matrix+1)+2)

    数组指针:

    int (*ptr)[3]; //大小为3的一维数组的指针变量

    int maxtrix[2][3]; ptr = maxtrix;

    指针数组:int *ptr[3]; //大小是3的一维数组,元素都为int * 的指针变量

    字符串:在c语言中,是将字符串作为字符数组来处理,用字符数组来存放字符串

    字符数组的长度:字符数组包含元素的个数

    字符串的长度:字符串中非零字符的个数   字符数组长度不等于字符串长度

    在c语言中,规定一个字符串的结束符号为‘\0’

    字符数组的两种输入方式:

    1,逐个字符串输入:printf("%c",c[i]);  scanf("%c",c[i]);get(c)

    2,整个字符串一次输入:printf("%s",c);  scanf("%s",c);空格结束,gets(c);

    编译预处理:

    hello.c 预处理 hello.igcc -E hello.c -o hello.i

    hello.i 编译 hello.sgcc -S hello.i -o hello.s

    hello.s 汇编 hello.ogcc -C hello.s -o hello.o

    hello.o 链接hello gcc hello.o -o hello

    宏 #define 标识符  语言符号字符串

    在预处理的时候,用后边的字符串代替前面的标识符

    注意:字符串常量里的标识符不会被替换

    宏定义的字符串,尽量多的添加小括号

    #ifndef  _文件名_H 1,调试程序的时候使用,用于添加或注释log信息

    #define _文件名_H 2,防止文件重复包含

    #endif

    <> 优先从系统路径/usr/include/下查找头文件

    ""优先从当前路径下,也就是源文件所在路径下查找,如果找不到,再到系统路径/usr/include/下查找头文件

    分文件

    .h文件:头文件,对应源文件的函数声明,外部变量声明,宏定义,结构体类型声明,枚举类型声明

    .c文件:源文件,函数的定义,变量的定义,函数的调用,变量声明

    标准输入 stdin 有缓存 缓存的刷新/清空

    标准输出 stdout有缓存 1,缓存区满  2,遇到\n

    标准错误 stderr无缓存 3,遇到fflush 4,程序运行结束

    结构体

    类型不同的一些数据放到一起,可以吧不同类型的数据进行封装

    结构体内部的数据,叫做成员

    结构体可以使用{}进行初始化,类似于数组的初始化

    对结构体不可以整体进行操作,只能对最终成员进行操作

    结构体可以进行嵌套

    结构体指针:

    访问成员时,用->进行访问,或者(*ptr).age

    结构体数组:

    数组中每个元素都是一个结构体,访问的时候先访问元素再指定到具体成员

    struct s_t leader[3];leader[0].name

    函数传参:

    参数是结构体类型,传参就是把结构体变量内容复制一份(通常不传结构体),用结构体变量的地址,指针为参数,传递地址,比较节省时间。

    int main(int argc ,char *argv[])

    argc:参数的个数,包含可执行文件的那个字符串

    argv:每个字符串组成的向量

    数组的特点:1,类型一致 2,空间顺序连续

    共用体/联合体

    union 类型名{成员;};

    不同类型的变量占用同一段内存空间,这样的类型叫共用体。在同一时段,只能使用一个成员变量

    位断:

    struct packed_data 在一个结构体中,一位bit为单位来指定某个成员所占内存的长度,这种以位为单位的成员称为位段或位域

    {

    unsigned int a:2;

    unsigned int b:6;

    int i; 

    }

    共用体和位段的应用:读取一个int型数据的一字节:

    struct p_data { char a; char b; char c; char d; }; union { int i; struct p_data data; }

    转载请注明原文地址: https://ju.6miu.com/read-669539.html

    最新回复(0)