Java教程

【学习打卡】第9天 物联网/嵌入式工程师 第二周

本文主要是介绍【学习打卡】第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天 物联网/嵌入式工程师 第二周的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!