![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
calm~down
野蛮生长,永不彷徨
展开
-
C语言中函数参数压栈顺序(printf函数举例)
在C语言中,函数的压栈顺序为从右至左。示例代码: int p = 0; printf("%d %d %d \n",p++,++p,p++);函数的执行结果是2 2 0为什么函数的压栈顺序是从右向左呢,我们看一下printf函数的原型:printf(const char* format,…)printf函数是一个不定参函数。编译器通过format的%占位符的个数来获取参数的个数。假设函数压栈顺序是从左至右,format先入栈,各个参数再入栈,最后pc入栈。入栈完之后,想知道参数的个数就原创 2020-08-03 16:29:29 · 2021 阅读 · 2 评论 -
枚举
枚举是干嘛的枚举在C语言中其实是一些符号常量。直白点说:枚举定义了一些符号,这些符号的本质就是int类型的常量,每个符号和一个常量绑定,这个符号就表示了一个自定义的一个识别码,编译器对枚举的认知就是符号常量所绑定的那个int类型的数字。枚举常量和其对应的常量数字相对来说,数字不重要,符号才重要。符号对应的数字只要彼此不相同即可,没有别的要求。所以一般情况下我们都不明确指定这个符号所对应的数字,而让编译器自动分配。(从0开始一次增加,如果用户自己指定了一个值,则从那个值开始往后依次增加)C语言为何需原创 2020-07-23 16:08:32 · 111 阅读 · 0 评论 -
C语言中的大小端
大小端模式:大端模式(big endian)和小端模式(little endian)。串口通信时,一次只能发送一个字节,这时候就有一个问题,是从0-1还是从1-0.规则就是发送方和接受方必须按照相同的顺序来通信,否则就会出现错误。这就是通信当中的大小端模式。我们讲的实质计算机存储系统中的大小端。在计算机内存/硬盘/iNand中,因为存储系统是32位的,但数据仍然是按照字节为单位的。于是一个32位的二进制在内存中存储是由2种分布方式:高字节对应高地址(大端模式)、高字节对用低地址(小端模式)。大小端原创 2020-07-23 16:06:10 · 375 阅读 · 0 评论 -
C语言中为什么要清除.bss段
bss段里的内容显示初始化为0或者未显示初始化的全局变量显示初始化为0或者未显示初始化的static局部变量。为什么要清除.bss段C语言程序在编译完成后,初始化为非零的全局变量存放在.data段,而未初始化或初始化为0的全局变量存放在.bss段中。在生成的可执行文件中,只有.data段和.text段(存放代码),由系统从可执行文件中加载.bss段在可执行文件中只是起始地址和结束地址(记录它的大小),并不给其分配内存空间。.bss段由系统初始化(清零)...原创 2020-07-23 00:30:17 · 1198 阅读 · 0 评论 -
递归函数
递归函数什么是递归函数在函数中调用了自己本身这个函数的函数递归函数和循环的区别。递归函数解决问题的典型就是:求阶乘、斐波那契数列。//用递归函数来计算阶层#include <stdio.h>int jiecheng(int n);int main(void){ int a=5; int ret; ret = jiecheng(a); ...原创 2020-03-21 15:54:31 · 162 阅读 · 0 评论 -
typedef定义类型
typedefc语言的2种类型:内建类型与用户自定义类型内建类型DAT、自定义类型UDTtypedef定义类型而非变量类型是一个数据模板,变量是一个实在的数据。类型不占内存,变量占内存面向对象的语言中:类型就是类class,变量就是对象typedef与#define宏的区别typedef char* pChar#define pChar char*typedef与结构...原创 2020-03-21 12:25:45 · 435 阅读 · 0 评论 -
枚举
枚举枚举是干嘛的枚举在C语言中其实是一些符号常量。直白点说:枚举定义了一些符号,这些符号的本质就是int类型的常量,每个符号和一个常量绑定,这个符号就表示了一个自定义的一个识别码,编译器对枚举的认知就是符号常量所绑定的那个int类型的数字。枚举常量和其对应的常量数字相对来说,数字不重要,符号才重要。符号对应的数字只要彼此不相同即可,没有别的要求。所以一般情况下我们都不明确指定这个符号所对应...原创 2020-03-21 09:27:42 · 105 阅读 · 0 评论 -
大小端模式
大小端模式:大端模式(big endian)和小端模式(little endian)。串口通信时,一次只能发送一个字节,这时候就有一个问题,是从0-1还是从1-0.规则就是发送方和接受方必须按照相同的顺序来通信,否则就会出现错误。这就是通信当中的大小端模式。我们讲的实质计算机存储系统中的大小端。在计算机内存/硬盘/iNand中,因为存储系统是32位的,但数据仍然是按照字节为单位的。于是一个...原创 2020-03-21 09:01:59 · 616 阅读 · 0 评论 -
结构体与共用体
结构体类型就是一种自定义类型结构体使用时先定义结构体类型,然后再用类型来定义变量也可以在定义类型的同时定义变量数组——>结构体结构体可以认为是从数组发展而来的。其实数组和结构体都算是数据结构的范畴了,数组就是简单的数据结构、结构体比数组更复杂一些,链表、哈希表之类的比结构体又复杂了一些;二叉树、图等又更复杂一些。数组有两个明显的缺陷:第一个是定义时必须给出明确的大小,且不能再更...原创 2020-03-21 00:18:50 · 154 阅读 · 0 评论 -
字符串实质,sizeof & strlen
C语言用指针来管理字符串char *p=“linux” 此时,p只是一个字符指针(本质上就是一个指针变量,只是p指向了一个字符串的起始地址而已)C语言中字符串的本质:指针指向头、固定尾部的地址相连的一段内存字符串就是一串字符,字符反映在现实中就是文字、符号、数字等人用来表达的字符,反映在编程中字符就是字符类型的变量。C语言中使用ASCII编码对字符进行编码,编码后可以用char型变量来表示...原创 2020-03-20 23:44:06 · 419 阅读 · 0 评论 -
程序三种获取内存的方法,栈&堆&段
程序运行需要内存来存储一些临时变量内存管理是由操作系统完成的内存本身在物理上是一个硬件器件。内存是由操作系统统一管理,程序根据自己的情况来选择某种方式获取内存(在操作系统处登记这块内存的临时使用权限)、使用内存,释放内存(向操作系统归还这块内存的使用权限)栈的详解运行时自动分配&回收;栈是自动管理的,程序员不需要手工干预反复使用:栈内存在程序中其实就是那一块空间,程序...原创 2020-03-20 22:29:58 · 1029 阅读 · 0 评论