【学习打卡】第12天 物联网/嵌入式工程师 第二周
2022/8/16 3:23:02
本文主要是介绍【学习打卡】第12天 物联网/嵌入式工程师 第二周,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称: 物联网/嵌入式工程师
课程章节: 第二周 计算机基础和C语言
主讲老师: 大白老师
课程内容:
今天主要学习了多级指针的使用
课程收获:
多级指针就是指针的指针…,实际上也没那么复杂,比较简单。
以常用的二级指针为例
二级指针类型实际上是(一级)指针变量的地址。
以二级指针为例:
定义方式 如下: 数据类型 ** 变量名; int a = 10; int *p = &a; int **q = &p; --------------------------------------------- p = &a; //*p = *(&a) *p <===> a q = &p; //*q = *(&p) ===> *q = p; **q <===> *p<===>a
在32bit的系统中,所有的指针变量都是4bytes,多级指针(二级和二级以上)在移动的每次移动都是4bytes. 因为一个指针大小是4bytes。
int *p = NULL; char **p_char = (char **)&p; short **p_short = (short **)&p; int **p_int = (int **)&p; printf("sizeof(p_char) = %d\n",sizeof(p_char)); printf("sizeof(p_short) = %d\n",sizeof(p_short)); printf("sizeof(p_int) = %d\n",sizeof(p_int)); return 0; ------------------------------------------------、 结果:sizeof(p_char) = 4 sizeof(p_short) = 4 sizeof(p_int) = 4
下面说一下数组:
int a[5] = {10,20,30,40,50}; int *p = a; int **q = &p; //q <===>&p *q <===>*(&p) *q<===>p 而根据一维数组得出结论: a[i] <===>*(a + i)<===>*(p + i)<===>p[i] 且 *q<===>p,故 *(p + i)<===>p[i]<===>*(*q + i) <===>(*q)[i]
其实理解了之前一级指针的本质,二级也不算难。都是同样的。
// int a[5]; // int *p = a; // int **q = &p; //q = &p *q<===>*(&p)<====>p //结论: a[i]<===>*(a + i)<===>*(p + i)<===>p[i]<====>*(*q + i)<===>(*q)[i] // int main() { int a[5] = {10,11,12,13,14}; int *p = a; int **q = &p; //q = &p; *q<===>*(&p)<===>p //a[3] = 13 printf("a[3] = %d\n",a[3]); printf("*(a + 3) = %d\n",*(a + 3)); printf("*(p + 3) = %d\n",*(p + 3)); printf("p[3] = %d\n",p[3]); printf("==========================\n"); //a[3] printf("*(*q + 3) = %d\n",*(*q + 3)); printf("(*q)[3] = %d\n",(*q)[3]); ———————————————————————————————————————————— 结果:a[3] = 13 *(a + 3) = 13 *(p + 3) = 13 p[3] = 13 ========================== *(*q + 3) = 13 (*q)[3] = 13
就是这样
课后作业
答案:
p=a; q=&p; for(i=0;i<5;i++) { printf("%d\n",p[i]); printf("%d\n",*q[i]); }
每日一句:
去接受一些你不了解的东西,去争取,去相信自己可以改变一些事情。
——《一个人的朝经》
这篇关于【学习打卡】第12天 物联网/嵌入式工程师 第二周的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南