指针的一个灵活测试代码(获取第二、三字节的数据)涉及到指针的跨度和宽度概念

指针的一个灵活测试代码(获取第二、三字节的数据)涉及到指针的跨度和宽度概念

// 获取第二个和第三个字节的数据(涉及到指针的宽度和跨度) 
#include 
using namespace std;

int main () {
	int num = 0x01020304;
	int* p =# 
	char* c = (char*)# // int是4字节的,char 是1字节的,强转之后,只会取到最低那一个字节的
	short* b = (short *)(c + 1);//利用对应类型的跨度,来取到二 三字节的数据 
	cout << hex << *b << endl; 
	
	return 0;
}
 - num是int类型的
 - &num是int * 类型的
 - 对变量取地址&,相当于整个表达式类型上加上一个*(即他变成了int*类型的)
 - *p==num是int类型的;在使用中,对指针变量使用*(解除应引用),整个表达是类型上
   减少一个*,即*p是int类型的
 - 在使用中当*&同时出现时,从右往左,依次抵消。
 - &*&*& == &num | &*&*&*p == p
 - 指针变量的自身类型:去掉变量名,剩余的部分就是指针变量的自身类型。
 - 指针变量的指向类型:去掉变量名及离它最近的一个*,剩余的部分就是指针变量指向的类型;
 - 指针变量所取的内容的宽度是由指针变量所指向的类型长度决定的;

你可能感兴趣的:(C/C++,c++)