
C高级编程
文章平均质量分 95
。。。
行孤、
就写博客做做笔记,写一下我自己的想法。
展开
-
C 高级编程day07 ——预处理和静动态库
文章目录一、预处理1.预处理的基本概念1.1 文件包含指令(#include)1.1.1 文件包含处理1.1.2 #incude<> 和 #include"" 区别1.1.3 注意:2.宏定义2.1 无参数的宏定义(宏常量)2.2 注意事项:2.3 带参数的宏定义(宏函数)3. 条件编译3.1 防止头文件被重复包含引用3.2 一些特殊的预定宏 一、预处理 1.预处理的基本概念 C语言对源程序处理的四个步骤:预处理、编译、汇编、链接。 预处理是在程序源代码被编译之前,由预处理器(Prepr原创 2021-11-26 13:51:14 · 1381 阅读 · 1 评论 -
C 高级编程day06——函数指针和回调函数
文章目录一、函数指针1.函数类型(模板)1.1 如何区分两个不同的函数?1.2 函数指针使用的注意事项1.3总结定义函数指针的步骤2.函数指针(指向函数的指针)三种定义方式二、函数指针做参数(回调函数)1.注意事项 一、函数指针 1.函数类型(模板) 1.1 如何区分两个不同的函数? (1)一个函数在编译时被分配一个入口地址,这个地址就称为函数的指针,函数名代表函数的入口地址。 测试:将main函数的地址打出来 int main() { printf("%p\n",main); re原创 2021-11-25 20:06:01 · 369 阅读 · 0 评论 -
C 高级编程day04 多维数组与结构体强化
一、多维数组 1.一维数组 元素类型角度:数组是相同类型的变量的有序集合 内存角度:连续的一大片内存空间 在讨论多维数组之前,我们还需要学习很多关于一维数组的知识。首先让我们学习一个概念。 1.1 数组名 考虑下面这些声明: int a; int b[10]; 我们把a称作标量,因为它是个单一的值,这个变量是的类型是一个整数。我们把b称作数组,因为它是一些值的集合。下标和数名一起使用,用于标识该集合中某个特定的值。例如,b[0]表示数组b的第1个值,b[4]表示第5个值。每个值都是一原创 2021-11-24 18:48:00 · 1771 阅读 · 0 评论 -
C高级编程day03 位运算
一、位逻辑运算符 4个位运算符用于整型数据,包括char.将这些位运算符成为位运算的原因是它们对每位进行操作,而不影响左右两侧的位。请不要将这些运算符与常规的逻辑运算符(&& 、||和!)相混淆,常规的位的逻辑运算符对整个值进行操作。 1.按位取反:~ (1)一元运算符 ~ 将每个1变为0,将每个0变为1,如下面的例子: ~(10011010) 01100101 (2)请注意该运算符不会改变a的值,a仍为2。假设a是一个unsigned char,已赋值为2.在二进制中,2原创 2021-11-23 21:56:13 · 769 阅读 · 0 评论 -
C 高级编程day02 函数的调用模型与指针强化
文章目录一、宏函数1.如何定义宏函数2.什么时候使用宏函数3. 宏函数优点:二、函数的调用模型1.函数调用流程2.函数调用惯例2.1函数参数的传递顺序和方式2.2栈的维护方式2.3 常见的调用惯例2.4 函数变量传递分析2.4.1 main 函数在栈区开启的内存2.4.2 main 函数在堆区开启的内存2.4.3 子函数1在栈区开启的内存2.4.4 子函数1在堆区开启的内存3.栈的生长方向和内存存放方向(1)测试栈的生长方向(2)测试内存存放方向三、指针强化1.指针变量2.野指针和空指针2.1 空指针2.2原创 2021-11-22 21:49:30 · 1639 阅读 · 0 评论 -
C 高级编程day01——内存分区
文章目录一、数据类型1.数据类型的概念2.数据类型大致分类3.数据类型别名3.1 测试代码:3.2 注意事项4.void数据类型4.1 void * 转换5.sizeof 操作符5.1 基本语法5.2 sizeof 注意点5.3 测试5.4 数组名与指针6.变量6.1 变量的概念6.2 变量名的本质6.3 修改变量的值的两种方式二、程序的内存分区模型1.内存分区1.1 程序运行之前1.2 size + 可执行二进制文件(1)代码区(2)全局初始化数据区/静态数据区(data段)(3)未初始化数据区(又叫 b原创 2021-11-20 20:35:44 · 1682 阅读 · 1 评论