嵌入式-C语言-江科大-指针的详解与应用

文章目录

  • 一:计算机存储机制
  • 二:定义指针
  • 三:指针的操作
  • 四:数组与指针
  • 五:指针的应用
    • 道友:最清晰的脚印,踩在最泥泞的道路上。

推荐视频配合我的笔记使用
[C语言] 指针的详解与应用-理论结合实践,真正理解指针!

一:计算机存储机制

嵌入式-C语言-江科大-指针的详解与应用_第1张图片

1.地址是房间号,内存是房间
2.一个字节一个地址
嵌入式-C语言-江科大-指针的详解与应用_第2张图片
3.跨字节分配模式
①、小端模式(常见):把数据的小端放在地址的低位
(0x12345678)从左往右是大端到小端
②、大端模式:把数据的大端放在地址的低位

嵌入式-C语言-江科大-指针的详解与应用_第3张图片4.数组按顺序存,数组必须是连续的线性空间
嵌入式-C语言-江科大-指针的详解与应用_第4张图片

二:定义指针

嵌入式-C语言-江科大-指针的详解与应用_第5张图片1.指针不是指针变量,指针是地址,指针变量是用来存放地址的变量

2.sizeof函数的返回值是输入变量的字节
嵌入式-C语言-江科大-指针的详解与应用_第6张图片

三:指针的操作

嵌入式-C语言-江科大-指针的详解与应用_第7张图片

  1. 不同写法,但p代表的意思一样
char a = 0x66;
 char*  p ;
 p = &a;
char a = 0x66;
 char*  p = &a;

如果把内存看作一个仓库的话,0x66相当于存放在房间中的物品,char*/int类型的p相当于房间号, char p = &a相当于通过房间号找到房间并把物品取出

2.测试p++,使指针向下移动一个数据宽度
①:int 数据类型占4个字节,%x表示16进制,%d就是十进制,%c输出字符
嵌入式-C语言-江科大-指针的详解与应用_第8张图片②:char数据类型占1个字节

8+5=13,8 9 A B C D
嵌入式-C语言-江科大-指针的详解与应用_第9张图片

四:数组与指针

嵌入式-C语言-江科大-指针的详解与应用_第10张图片1.a就是指针变量,不用加&
2.数据类型则需要在变量名前加“&”,结构体数组等则直接存放变量名(变量名即首地址)
3.

*(P+1//指针的正常加一
 *P+1   //先引用指针再进行加一运算

4.char c[] = {0x33,0x34,0x35};
三个元素,每个占四个字节

5.指针需要给确定的值,不然会变成野指针(有随机性)
嵌入式-C语言-江科大-指针的详解与应用_第11张图片6.一级指针存放的是变量的地址,二级指针存放的是一级指针的地址

五:指针的应用

嵌入式-C语言-江科大-指针的详解与应用_第12张图片

1.值传递:子函数里面的动作不影响主函数,目的是防止子函数影响主函数

主函数会开辟一块空间,当子函数在调用时同样会开辟一样的空间,就是有两份一模一样的空间,浪费内存

址传递(指针传递):子函数形参是指针,会影响主函数,当数据量太大时,只能妥协了允许子函数通过指针修改主函数,谁让你为了省内存。

2.我想省空间,又不想子函数动主函数的数据,要加一个const关键字
推荐文章《const关键字-指针常量和常量指针》
嵌入式-C语言-江科大-指针的详解与应用_第13张图片

加了const,址传递,子函数能调用主函数的同时,空间不用复制,主函数也不会被子函数修改,这样子编译器会出错,不让执行。
整体空间只多了子函数的数据类型(int* arry),如上图,总空间只增加了8位,

注意:求数组长度用length=sizeof(a)/sizeof(a[0])
推荐文章:《sizeof()使用》

3.比如子函数想调用int a[],如果不想用指针,那么要把int a[]写成全局变量,坏处就是数据的耦合性不好,封装不了。

4.句柄:大纸箱里放小纸箱,小纸箱里面放快递标签
在这里插入图片描述5、句柄相当于电脑桌面的快捷方式软件图标,一个传送阵

嵌入式-C语言-江科大-指针的详解与应用_第14张图片6.用c语言在生成文件,并写入内容,把字符A,写入到文件中,这个test.txt文件中里面内容是字符‘A’
嵌入式-C语言-江科大-指针的详解与应用_第15张图片
7.区分
fgetc(f) :文件函数中,获取char型数据
fgets(s,5,f):文件函数中,获取string数据

嵌入式-C语言-江科大-指针的详解与应用_第16张图片嵌入式-C语言-江科大-指针的详解与应用_第17张图片8.打印单片机ID号

嵌入式-C语言-江科大-指针的详解与应用_第18张图片9.最后五分钟,等你评论区补充

道友:最清晰的脚印,踩在最泥泞的道路上。

你可能感兴趣的:(嵌入式C语言,c语言,开发语言,mcu,嵌入式硬件,单片机,stm32)