一级指针简介


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群一名“创始团队·嘉宾” ,现在我来为大家介绍一下有关嵌入式方面的内容。在进入介绍之前,可能有一些小伙伴不了解易编程·终身成长社群;想要进一步了解社群的小伙伴可以点击下方链接自行跳转至关于社群的介绍:

易编程·终身成长社群介绍 :
https://blog.csdn.net/weixin_74300052?spm=1011.2266.3001.5343

在这里插入图片描述


🍊一级指针的特点

1、数据类型

int m;
int *p = &m;

在这里,指针变量p本身的数据类型是:int *;
指针变量保存的对象的数据类型: int

强调:

int *p = &m; 当中int * 是一个整体

2、大小端模式

不同系统使用的CPU不同,对数据的存储形式也有不同,分为以下两种:

大端模式:ARM,摩托罗拉

小端模式:intel,MIPS

大端模式:内存的高地址存储数据的低位,内存的低地址存储数据的高位。
(低地址存高位————低对高)

小端模式:内存的低地址存储数据的低位,内存的高地址存储数据的高位。
(低地址存低位————低对低)

举个栗子:
以 0x12345678 为例:

地址小端模式大端模式
0xdff300x780x12
0xdff310x560x34
0xfdf320x340x56
0xdff330x120x78

3、指针结论

· 在32位(bit)的操作系统中,所有类型的指针变量都是4字节(bytes).[因为地址是4字节(bytes)]

示例代码:

#include <stdio.h>
int main()
{
	char *x;
	int *y;
	short *z;
	double *a;

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

	return 0;
}

· 不同类型的指针变量,对C语言中的同一块内存进行读取的时候,每次读取的字节数不同。
(读取为 除去指针变量 和 * ,剩下数据类型的大小),具体如下:

#include <stdio.h>//(ubuntu是小端模式存储)
int main()
{
	int a = 0x12345678;
	char *x;
	short *y;
	int *z;
	
	x = (char *)&a;
	y = (short *)&a;
	z = &a;
	
	printf("x = %#x\n",*x); //输出十六进制数  x = 0x78  char是一个字节
	printf("y = %#x\n",*x);//0x5678  short是两个字节
	printf("z = %#x\n",*x);//0x12345678  int是4个字节

}

在32位(bit)的操作系统中,不同类型的指针变量每次移动的大小不一样。(移动大小为 除去指针变量 和 * ,剩下数据类型的大小),具体如下:

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

  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值