继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

昆汀
关注TA
已关注
手记 19
粉丝 8
获赞 12

课程名称: 物联网/嵌入式工程师

课程章节: 第二周 计算机基础和C语言

主讲老师: 大白老师

课程内容:

今天主要学习了对一级指针的初识和简介。

课程收获:

一级指针其实就是我们平时常见的普通指针:

int a=10;
int *p=&a;

然后现在介绍一下大小端
不同系统使用的cpu不同,相对的存储形式也不同,分为大端模式和小端模式
大端模式:内存的低地址存储数据的高位,内存的高地址存储数据的低位
小端模式:内存的低地址存储数据的低位,内存的高地址存储数据的高位。
现在记一下经常记不住的点:
1个16进制数=4个2进制数
1byte=8个2进制数
所以1byte=两个十六进制数.
在32bit的操作系统中,所有类型的指针变量都是4bytes. [因为地址为4bytes]
比如

//03-pointer.c
#include <stdio.h>

int main()
{
        char *x;
        short *y;
        int *z;

        printf("sizeof(x) = %d\n",sizeof(x));
        printf("sizeof(y) = %d\n",sizeof(y));
        printf("sizeof(z) = %d\n",sizeof(z));


        return 0;
}

结果:

sizeof(x) = 4
sizeof(y) = 4
sizeof(z) = 4

但是要注意:
不同类型的指针变量,对C语言中的同一块内从进行读取的时候,每次读取的字节数

不同。(读取为指针变量 + *,剩下数据类型的大小),具体如下:


 char *p = (char *)&a;
 short *q = (short *)&a;
 int *m = &a; 
 
 *p; //读取变量a的1bytes数据
 *q; //读取变量a的2bytes数据
 *m; //读取变量a的4bytes数据

还有就是不同的指针变量,每次移动的大小不一样:
每次移动的大小为数据类型的大小。


char *p = (char *)a;
 short *q = (short *)a;
 int *m = a; 
 
 p++; //每次移动1bytes的大小
 q++; //每次移动2bytes的大小
 m++; //每次移动4bytes的大小

附上今天的课后作业:
图片描述
答案:

(1).

	short *q=(unsigned short *)&data;
(2).
	t1=*q;
	q++;
	t2=*q;
(3).
 printf("t1+t2=%#x\n",t1+t2);
    printf("t1-t2=%#x\n",t1-t2);

每日一句:

有时候没有结果,可能不是自己努力不够,还可能是方向或者方法不对,工欲善其事,必先利其器

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP