随笔分类 -  C语言进阶

摘要:函数从意义上应该是一个独立的功能模块 函数名要在一定程度上反映函数的功能 函数参数名要能够体现参数的意义 尽量避免在函数中使用全局变量 当函数参数不应该在函数体内部被修改时,应该加上const声明 如果参数是指针,且仅当做输入参数时,则应该加上const声明 void str_copy(char*s 阅读全文
posted @ 2020-01-10 19:41 认真做个普通人 阅读(420) 评论(0) 推荐(0)
摘要:当字符串中有双引号时,需要使用“\”进行转义。 字符串中有“\”,需要使用“\\” 例如:const char* ip = "ifconfig | grep \"inet\" | grep -v 127.0.0.1 | awk '{print $2}'|grep '\\.'"; 阅读全文
posted @ 2020-01-10 19:34 认真做个普通人 阅读(471) 评论(0) 推荐(0)
摘要:1.枚举类型的使用方法 enum是C语言中的一种自定义类型 enum值是可以根据需要自定义的整型值 第一个定义的enum值默认为0 默认情况下的enum值是在前一个定义值的基础上加1 enum类型的变量只能取定义时的离散值 enum中定义的值是C语言中真正意义上的常量 在过程中enum多用于定义整型 阅读全文
posted @ 2020-01-10 19:25 认真做个普通人 阅读(209) 评论(0) 推荐(0)
摘要:数组的访问方式 以下标的形式访问数组中的元素 以指针的形式访问数组中的元素 下标形式VS指针形式 指针以固定增量在数组中移动时,效率高于下标形式 指针增量为1且硬件具有硬件增量模型时,效率更高 下标形式与指针形式的转换 a[n]《=》*(a+n) 注意:现代编译器的生成代码优化率已大大提高,在固定增 阅读全文
posted @ 2020-01-10 19:11 认真做个普通人 阅读(116) 评论(0) 推荐(0)
摘要:数组的本质 数组是一段连续的内存空间 数组的空间大小为sizeof(arrary_type)*arrary_size 数组名可看做指向数组第一个元素的常量指针 问题: a+1的意义是什么?结果是什么? 指针运算的意义是什么?结果又是什么? 1 #include <stdio.h> 2 int mai 阅读全文
posted @ 2020-01-10 19:08 认真做个普通人 阅读(270) 评论(0) 推荐(0)
摘要:1.auto关键字 auto即C语言中的局部变量的默认属性 auto表明将被修饰的变量存储在栈中 编译器默认所有的局部变量都是auto的 2.register关键字 register关键字指明将局部变量存储于寄存器中 register只请求寄存器变量,但不一定成功 register变量的必须是CPU 阅读全文
posted @ 2020-01-10 18:05 认真做个普通人 阅读(331) 评论(0) 推荐(0)
摘要:数组是相同类型变量的有序集合,例如:int a[5]; a代表数组第一个元素的起始地址 有5个int类型的数据,且是5个连续的内存空间。 这个20个字节的空间的名字叫a,a[0],a[1]都是数组中的元素,数组中的元素没有名字 数组的大小 数组在一片连续的内存空间中存储元素 数组元素的个数可以显式或 阅读全文
posted @ 2020-01-10 14:53 认真做个普通人 阅读(363) 评论(0) 推荐(0)
摘要:动态内存分配的意义 C语言中的一切操作都是基于内存的 变量和数组都是内存的别名 内存分配由编译器在编译期间决定 定义数组的时候必须指定数组长度 数组长度是在编译期就必须确定的 需求:程序运行的过程中,可能需要使用一些额外的内存空间 malloc和free用于执行动态内存分配和释放 malloc所分配 阅读全文
posted @ 2020-01-10 14:46 认真做个普通人 阅读(540) 评论(0) 推荐(0)
摘要:指针本质分析 变量回顾:程序中的变量只是一段存储空间的别名,那么是不是必须通过这个别名才能使用这段存储空间? 可以通过指针改变另一个变量的值 指针的本质为变量(只要是变量,就有地址),不过说这种变量很特殊,它存储的是变量的地址值 在指针声明时,*号表示所声明的变量为指针 在指针使用时,*号表示取指针 阅读全文
posted @ 2020-01-10 14:02 认真做个普通人 阅读(239) 评论(0) 推荐(0)
摘要:知识点: C语言中单引号用来表示字符字面量 C语言中的双引号用来表示字符串字面量 ‘a’表示字符字面量,在内存中占一个字节,‘a’+1表示‘a’的ascii码加1,结果为‘b’ “a”表示字符串字面量,在内存中占2个字节,“a”+1表示指针运算,结果指向“a”结束符‘\0 ’ 字符字面量被编译为对应 阅读全文
posted @ 2020-01-10 13:48 认真做个普通人 阅读(844) 评论(0) 推荐(0)
摘要:杜绝野指针 指针变量中的值是非法的内存地址,进而形成野指针 野指针不是NULL指针,是指向不可用内存地址的指针 NULL指针并无危害,很好判断,也很好调试 C语言中更无法判断一个指针保存的地址是否合法 野指针的由来 局部指针变量没有初始化(定义指针需要初始化NULL) 指针所指向的变量在指针之前被销 阅读全文
posted @ 2020-01-10 13:41 认真做个普通人 阅读(217) 评论(0) 推荐(0)