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;
}
相关推荐
xie_pin_an5 小时前
深入浅出 C 语言数据结构:从线性表到二叉树的实战指南
c语言·数据结构·图论
总爱写点小BUG9 小时前
打印不同的三角形(C语言)
java·c语言·算法
xie_pin_an13 小时前
C 语言排序算法全解析:从原理到实战,附性能对比
c语言·算法·排序算法
再睡一夏就好14 小时前
深入解析Linux页表:从虚拟地址到物理内存的映射艺术
linux·运维·服务器·c语言·c++·页表·缺页异常
LinHenrY122715 小时前
初识C语言(编译和链接)
c语言·开发语言·蓝桥杯
l1t15 小时前
利用小米mimo为精确覆盖矩形问题C程序添加打乱函数求出更大的解
c语言·开发语言·javascript·人工智能·算法
松涛和鸣15 小时前
34、 Linux IPC进程间通信:无名管道(Pipe) 和有名管道(FIFO)
linux·服务器·c语言·网络·数据结构·数据库
秦苒&15 小时前
【C语言】详解数据类型和变量(一):数据类型介绍、 signed和unsigned、数据类型的取值范围、变量、强制类型转换
c语言·开发语言·c++·c#
LinHenrY122715 小时前
初识C语言(文件操作)
c语言·windows·microsoft
智者知已应修善业16 小时前
【删除有序数组中的重复项 II之O(N)算法】2024-1-31
c语言·c++·经验分享·笔记·算法