C语言:指针类型的意义

1.指针的类型决定了解引用时访问几个字节

2.指针的类型决定了指针+1、-1跳过几个字节

一、指针的类型决定指针解引用时访问几个字节

例如 int 型指针解引用时访问4个字节

char 型指针解引用时访问1个字节

详解代码如下:

int b = 0x11223344(十六进制,小端存储,实际内存中存放顺序为:44 33 22 11)

p1指针为 int 型,取 b 的地址时可以取到4个字节,44 33 22 11全部取完,结果为0x11223344(十进制为287454020)

p2指针为 char 型,取 b 的地址时只能渠道1个字节,44(十六进制),结果为0x44(十进制为68)

cpp 复制代码
int main()
{

    int b = 0x11223344;//44 33 22 11
    int* p1 = &b;
    char* p2 = &b;

    printf("%d\n", *p1);
    printf("%d\n", *p2);

    return 0;
}

二、指针的类型决定指针 +1 或 -1 跳过几个字节

例如 int 型指针 +1/-1 跳过4个字节

char 型指针 +1/-1 跳过1个字节

详解代码如下:

指针 p1 是 int 型,p1+1跳过4个字节,初始时指向 0x11223344,跳过4个字节后指向 2,所以 *(p1+1)结果为2

指针 p2 是 char 型,p2+1跳过1个字节,初始时指向 44,跳过1个字节或指向 33,所以 *(p2+1)结果是 0x33(十进制为51)

cpp 复制代码
int main()
{
    int nums[5] = { 0x11223344,2,3,4,5 };
    
    int* p1 = nums;
    char* p2 = nums;

    printf("%d\n", *(p1 + 1));
    printf("%d\n", *(p2 + 1));

    return 0;
}
相关推荐
人邮异步社区12 小时前
怎么把C语言学到精通?
c语言·开发语言
xiaobobo333018 小时前
C语言中宏定义宏名和宏值之间的关系
c语言·宏定义·语义型
a44931536221 小时前
MacBook USB-C不充电故障诊断:从PD握手到主板供电链路
c语言·开发语言·macos·电脑
a4493153621 天前
iPhone 充电故障的全链路诊断——从 Lightning/USB-C 接口到 Tristar 充电 IC
c语言·macos·ios·电脑·硬件架构·iphone
qq_448011161 天前
C语言中的getchar()
c语言·开发语言
天空'之城1 天前
C 语言工业级通用组件手写 15:累加和校验
c语言·嵌入式开发·工业级组件·累加和校验
碎光拾影2 天前
i.MX6ULL时钟系统配置指南
c语言·arm开发·嵌入式硬件
GeekArch2 天前
第28讲:避坑——AI堆栈分配错误、栈溢出BUG
c语言·人工智能·stm32·mcu·学习·bug
wuyk5552 天前
59.嵌入式C语言高级宏定义实战:多行宏、字符串化与符号拼接
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·51单片机
无相求码2 天前
C程序的内存到底怎么分的?栈、堆、全局区一张图讲清楚
c语言