![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 74
加油油——1
这个作者很懒,什么都没留下…
展开
-
复盘!!指针 ,地址 ,数组之间的联系
工作摸鱼 闲来无事所以,这个题目答案是5.我来盘给你:int a[5] = {1,2,3,4,5};1·数组名本身就是表示数组首元素地址2·对数组名取地址:表示的是整个数组的地址,并且为int (*p)[5] 类型。但是哈!!不管是数组名的含义还是对数组名取地址的含义,他们都是表示一个地址,而且这个地址两者一致。不同的是:偏移量的不同。怎么解释?a+1表示的是a[1]的地址,偏移量只有一个数组元素。但是&a+1表示下一个数组的地址(也就是a[4]这个最后一个元素后面的那个地址),因为偏移量是一个数组。原创 2023-01-13 16:03:35 · 609 阅读 · 1 评论 -
智能电风扇(stm32f103c8t6)(直流电机,热敏传感器)(TIM,ADC)
1· 32单片机跑裸机的时候,注意,只能有主函数里面的while(1)循环,其他地方不能出现死循环。我试过,跑不出来,崩溃了。2· 模块化编程,一次最好循环一个模块。这个模块里面可以有一点点延时函数。其实延时函数对于整个系统来说是不友好的,我就在想有没有一种方法可以计时,但是不吃主控的性能,我的初步想法就是用定时器,定时到了不是申请中断,而是申请事件。后面看能不能试一下。原创 2023-01-13 15:59:41 · 2935 阅读 · 2 评论 -
C语言---熟悉内存这个东西(推荐)
文章目录前言一、内存的编址与寻址1·1 内存单元大小1·2 内存的编址方法1·3 内存与数据类型的关系1·4 内存对齐总结前言这是一篇关于C语言内存的博客,哈哈哈我觉得我最近由于收到offer后有点懈怠了。希望自己还是一个勤勉的自己~~还是好好学习好好写博客吧。不积跬步无以至千里。一、内存的编址与寻址1·1 内存单元大小内存大小有4个:位,字节,半字,字。位和字节是用的最多的。1·2 内存的编址方法内存在逻辑上可以想成一个一个挨着的格子,这些格子就是存放数据,每个格子都有一个专属编号原创 2022-05-26 08:41:56 · 230 阅读 · 0 评论 -
C语言--- 什么是位域?
文章目录前言一、什么是位域1、定义二、如何使用位域前言再一次机缘巧合的情况下,我第一次偶然的听说“位域”这个名词,当我查询了一下,发现它是一个关于C语言的知识点。并且在嵌入式的开发当中经常用到。于是这篇博客诞生。对于位域的知识点,指花了两个小时看了一篇博客,所以我不敢保证这篇博客没有错误,如有问题,请多多指教啦~~~一、什么是位域1、定义允许在一个结构体中以位为单位来指定其成员长度,这种以单位的成员称为“位段”或者“位域”。定义中涉及了结构体,所以,位域和结构体的关系紧密。再说一点,位域之原创 2022-05-22 15:15:54 · 2060 阅读 · 3 评论 -
12·C语言---链表与状态机 笔记
文章目录一、链表的引入二、单链表的实现三、提示:这只是笔记一、链表的引入1·1 先说说数组的缺陷:数组元素必须一致;数组元素个数一旦指定就不可更改。1·2 结构体解决了数组的第一个缺陷,链表就是解决了数组的第二个缺陷。1·3 时刻记住链表是用来解决数组的大小不能扩展问题。二、单链表的实现2·1 单链表的节点构成 : 有效数据 + 指针2·2 定义的struct node 只是一个结构体,本身并没有变量生成,也不占内存。结构体的定义相当于为链表的节点定义了一个模板,但是还没有一原创 2022-03-06 17:02:42 · 777 阅读 · 1 评论 -
11·C语言---一些杂乱无章但是值得说说的问题
文章目录一、操作系统到底是个什么东西?二、 main函数的返回值究竟返回给谁?三、 argc 、argv 与main函数的传参四、 void类型的本质五、六、七、八、一、操作系统到底是个什么东西?1· 先说说裸机程序:代码量小,功能简单,所有代码都和直接目的有关,没有服务型代码(服务型代码就是 服务其他代码的 代码)。2· 操作系统类似于 管理阶级。操作系统的代码本身并不直接产生价值,它的主要任务就是管理所有资源,它主要为 直接产生价值,直接劳动的程序(各种应用程序)提供服务。所以原创 2022-03-02 20:12:27 · 401 阅读 · 0 评论 -
10·C语言---存储类,作用域,生命周期,链接属性 笔记
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、 概念1·1 存储类1·2 作用域1·3 生命周期1·4 链接属性二、 Linux下c程序的内存映像2·1 代码段,只读数据段2·2 数据段、bss段2·3 堆2·4 文件映射区2·5 栈2·7 内核映射区三、 存储类相关的关键字3·1 auto原创 2022-03-01 20:20:26 · 389 阅读 · 2 评论 -
9·C语言---静态链接库 与 动态链接库笔记
1· 比较早出现的是 静态链接库。静态库是商业公司将自己的函数库源代码经过只编译不链接形成 .o 文件,然后用ar工具将 .o 文件归档成 .a 文件( .a 文件又叫 静态链接库文件)。商业公司通过发布 .a 文件和 .h 头文件来提供静态库给客户使用,客户得到 .a 和 .h 文件后,通过 .h 头文件得知库函数的原型,然后在自己的 .c 文件中直接调用这些库文件,在链接的时候连接器会去 .a 文件中调出被调用的 那个函数被编译后得到的 .o二进制代码段链接进去形成最终的可执行程序。2·原创 2022-03-01 08:11:06 · 686 阅读 · 0 评论 -
8·C语言---C语言宏定义与预处理,函数(递归函数)
1·原创 2022-02-28 20:55:08 · 166 阅读 · 0 评论 -
7·C语言---共用体union与 枚举 笔记
1·共用体类型的定义、变量定义、和使用1·1 共用体union与结构体struct在类型定义,变量定义,使用方法上很相似。1·2 共用体 与 结构体的使用区别#include <stdio.h>// a 和 b其实指向同一块内存空间,只是对这一块空间的不同解析方式。// 如果使用u1.a 就是用int类型解析这个共用体,如果是u1.b就是用char类型解析。union myunion{ int a; char b;};struct mystruct{ int a原创 2022-02-27 12:37:48 · 207 阅读 · 0 评论 -
6·C语言---offsetof宏 与 container_of宏
1·由结构体指针进而访问各元素的原理—结构体首地址+元素偏移量2· offsetof宏的作用:用宏来计算结构体某个元素和结构体首地址的偏移量(其实是通过编译器帮外面计算偏移量)2·1 offsetof宏的原理:可以虚拟一个type类型的结构体变量,然后用type.member的方式来访问那个member元素,继而得到member相对于整个变量首地址的偏移量。#define offsetof(TYPE,MEMBER) ((int) &((TYPE * ) 0 ) -> MEMBER)原创 2022-02-27 08:53:53 · 188 阅读 · 0 评论 -
5·C语言---结构体笔记
1·结构体是一种自定义类型,结构体定义时需要先定义结构体类型在定义变量;也可以在定义结构体类型的同时定义结构体变量。2· 数组 与 结构体数组简单,但是对于数组的大小必须明确,而且元素的类型一致。结构体比较灵活,结构体的元素类型可以不一致。3· 结构体的对齐访问参考博客:https://www.cnblogs.com/dolphin0520/archive/2011/09/17/2179466.html4·对齐指令...原创 2022-02-26 14:49:53 · 146 阅读 · 0 评论 -
4·C语言---字符串类型 与 字符串函数 笔记(面试)
1·C语言中其实没有原生字符串类型,是通过字符指针来间接实现的。2·C语言使用指针来管理字符串2·1 C语言定义字符串的方法:char *p = "hellow";这里的p就叫做字符串,但是实际上p只是一个字符指针(本质就是一个指针变量,只是p指向了一个字符串的首地址)。...原创 2022-02-26 10:00:58 · 508 阅读 · 0 评论 -
3·C语言---内存相关的笔记
1· 程序是被放在内存中运行的,程序运行时需要内存来存储一些临时变量。2·内存的管理 最终由 操作系统 完成(1)内存在物理上是一个硬件器件,由硬件系统提供。(2)内存是由操作系统统一管理。获取内存,使用内存,向操作系统归还内存3· 三种内存来源:栈,堆,数据区3·1 栈 --------局部变量栈的特点:运行时自动分配,自动回收(栈是自动管理的,程序员不需要手动干预。)反复使用 :栈内存在程序中其实就那一块儿空间,程序反复使用这块空间。脏内存:栈内存由于反复使用,但是操作原创 2022-02-25 16:18:20 · 365 阅读 · 0 评论 -
2·C语言---指针数组 与 数组指针 与 函数指针笔记
1·指针数组 与 数组指针 概念(1)指针数组:就是指针的数组,数组里面的元素就是一个个数组。(2)数组指针:就是数组的指针,是一个指向数组的指针。2· 表达式(1)int *p[5] // 指针数组,p的方括号结合,那就是一个数组,所以为指针数组 // 这个数组有5个元素,每个元素都是指针,// 指针指向的元素类型是 int类型。(2) int (*p)[5]// 数组指针,p先与星号结合,那就是一个指针,所以为数组指针// 这个指针指向的是一个有5个元素(每个元素是int类型原创 2022-02-26 08:30:07 · 158 阅读 · 0 评论 -
1·C语言---指针笔记
1·指针到底是什么?指针其实也是一种变量,叫做指针变量。指针变量与其他的变量本质上一致。2·指针变量三部曲定义指针变量、绑定指针、解引用指针int a =5;//定义指针变量int *p ;//绑定指针的第一种方法p = &a; // 绑定这种的第二种方法p = 4;//这种绑定方式错误,因为p是int *类型, //4 是int 类型,类型不匹配所以不能这样绑定p = (int *)4;// 绑定这种的第二种方法,把int类的4 强制转换为 // 一个地址(也原创 2022-02-22 21:49:29 · 1064 阅读 · 0 评论