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;
}