为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
C

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

课程章节: 第二周 计算机基础和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);

每日一句:

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
学生
手记
粉丝
8
获赞与收藏
12

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消