【学习打卡】第9天 物联网/嵌入式工程师 第二周
2022/8/12 3:22:53
本文主要是介绍【学习打卡】第9天 物联网/嵌入式工程师 第二周,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称: 物联网/嵌入式工程师
课程章节: 第二周 计算机基础和C语言
主讲老师: 大白老师
课程内容:
今天的学习内容主要有:初识指针以及特殊指针。
课程收获:
指针定义:
比如int *p=NULL;
这里就是定义了一个名为p的整形指针,注意这里分开,定义是(int *)p。
指针是用来存放地址的,比如说
(&是取地址符号的意思)
int data1=10; int *p=&data1;
这是就是把data1的地址赋值给了p。
接下来介绍一下指针中常见的*
和上面的定义不同,要和int *这种区分开来。
*p,就是访问p所存的地址的意思,
星号后面要跟地址,所以也就相当于星号(&data1)。
常见的读写操作: *(&data1)=10; 相当于*p=10; //写操作 printf("%d",*p); //读操作
现在注意一点,不能存在野指针
什么是野指针
野指针:野指针指的是指针中保存的是无效的内存地址。用户直接使用,系统会提示段错误.(Segmentation fault (core dumped) 段错误: 一般由用户访问了非法的内存所导致。)
例如:
int *p; *p = 100; //error
这样是不对的,因为一开始定义了一个p指针,但是存放的地址并不清楚,而后只是对p进行的写操作,相当于*(&??),这样是不行的。
void* 指针 :
void * 是一种特殊的指针类型,可用于存放任意对象的地址。 例如: int a = 10; void *p = &a; 缺点: 由于不知道地址中存放的是何种类型的数据,因此不能直接操作void*指针所指的对象
这是由大白老师总结的,说的挺清楚。要想操作,就得强转,比如(int *)p
NULL指针:
通常用来初始化
#define NULL (void *)0
比如int *p=NULL;
0地址我们用户一般没有执行权限。直接对0地址操作操作,系统会提示段错误。
所以还是在初始化后赋值再进行操作
附上今天的课后作业:
答案:
1. int *p =&data1; int *q =&data2; 2 *p=data2; *q=data1; *p^=*q; *q^=*p; *p^=*q; 3. printf("%d,%d",*p,*q);
每日一句:
只有经历地狱般的磨练,才能练出创造天堂的力量;只有流过血的手指,才能弹出世间的绝唱。
——泰戈尔
这篇关于【学习打卡】第9天 物联网/嵌入式工程师 第二周的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 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题)