【学习打卡】第13天 物联网/嵌入式工程师 第二周
2022/8/16 3:22:56
本文主要是介绍【学习打卡】第13天 物联网/嵌入式工程师 第二周,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称: 物联网/嵌入式工程师
课程章节: 第二周 计算机基础和C语言
主讲老师: 大白老师
课程内容:
今天主要学习了指针数组的相关内容以及它们之间的联系。
课程收获:
类比之前的int,char数组,正因为有许多相同类型的元素,所以有了数组定义,指针数组其实也一样,指针数组中的元素是用来保存地址的,定义指针数组时可以像这样:
数据类型 *变量名[元素个数]; 例如: int *p[5];
每个指针的数据类型都是int *。
如果要计算元素个数其实跟前面的一维数组一样:
len = sizeof(p)/sizeof(p[0]);
接下来具体写一下:
比如说我定义三个整数,想用指针数组来输出: int a=10,b=20,c=30; int *p[3]={&a,&b,&c}; int len =sizeof(p)/sizeof(p[0]); for(i=0;i<len;i++) { printf("%d\n",*p[i]); } //当然还有其他输出形式: //printf("%d\n",*(*(p+i)));也是可以的
其实像上面的例子,我们可以不用定义len来计算长度的。
让指针数组结尾带NULL,使遍历时不依靠计算整个数组大小就可以在结尾遍历结束.
int a = 10,b = 20,c = 30; int *p_array[] = {&a,&b,&c,NULL}; int i = 0; for(i = 0;p_array[i] != NULL;i++) { printf("%p\n",p_array[i]) }
这样也是挺方便的
下面是老师上课讲的例题:
char a[] = {"zhao"}; char b[] = {"qian"}; char c[] = {"sun"}; //用指针数组来输出zhao qian sun 首先定义一个 char *q[]={a,b,c,NULL}; for(i=0;q[i]!=NULL;i++)//总体上遍历q数组 { for(t=q[i];*t!='\0';t++) //思路就是得到q数组的子元素地址然后进行遍历,比较关键,一定得清楚 { printf("%c",*t); } printf("\n"); }
二级指针保存指针数组的地址
示例用法: char a = 10,b = 20,c = 30; char *array[] = {&a,&b,&c,NULL}; //char **q = &array[0]; char **q = array; //q<===>array; //结论:针数组的首地址应该定义二级指针变量来保存 一维数组的特性: int a[5] = {10,20,30,40,50}; //整型数组 int *p = a; a[i]<===>*(a + i)<===>*(p + i)<==>p[i] =================================== char a = 10,b = 20,c = 30; char *array[] = {&a,&b,&c,NULL}; char **q = array; //q<===>array 数组的特点: 获得的是地址 array[i]<====>*(array + i)<===>*(q + i) <===>q[i] 获得数据的方法: *array[i]<====>*(*(array + i))<===>*(*(q + i)) <===>*q[i]
作业:
答案:
#include <stdio.h> #include <stdlib.h> int main() { char a1[] = "abCde"; char a2[] = "XYZBBQ"; int i; char *t=NULL; char *p_array[] = {a1,a2,NULL}; for(i=0;p_array[i]!=NULL;i++) { for(t=p_array[i];*t!='\0';t++) { if((*t>='a')&&(*t<='z')) { *t=*t-32; } else if((*t>='A')&&(*t<='Z')) { *t+=32; } } printf("%s\n",p_array[i]); } return 0; }
每日一句:
当你的能力还驾驭不了你的目标时,就应该沉下心来历练
这篇关于【学习打卡】第13天 物联网/嵌入式工程师 第二周的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)