C++指针学习笔记(一)——理解指针地址

C++指针学习笔记

关于存储指针地址的实验

首先,申请一个2字节的字符数组,并将该数组地址强制赋给长度同为2字节的short int 指针,观察short int 指针内容是否与字符数组相对应。

其次,改变short int 指针的内容,观察字符数组是否相应变化。

主要代码如下:

/***************************************************************关于存储指针地址的实验申请一个2字节的字符数组,并将该数组地址强制赋给长度同为2字节的short int 指针,
观察short int 指针内容是否与字符数组相对应。其次,改变short int 指针的内容,观察字符数组是否相应变化。
****************************************************************/#include<iostream>
#include<iomanip>
using namespace std;int main() {char* list = new char[2]; //list数组占用2字节list[0] = '1'; //对应ascii值为0x31,在内存中以0x31存储list[1] = '2'; //对应ascii值为0x32,在内存中以0x32存储cout << "list.addr:" <<setiosflags(ios::uppercase)<<hex<<int(list) << endl;cout << "list[0].addr:" << setiosflags(ios::uppercase) << hex <<int(&list[0]) << endl;cout << "list[1].addr:" << setiosflags(ios::uppercase) << hex << int(&list[1]) << endl;//可以发现list[0]和list[1]相临,且各占用一个字节;list的地址与list[0]重叠。short int* y = (short int *)list;//把list指向的地址强制赋给一个占用2个字节的短整型变量y,猜想y的地址和list存储空间应当完全重叠。cout << "y.addr:" << hex<<y<< endl;//可以检验y的地址与list地址相同cout << "y.value:" <<hex<<*y<< endl;//从list空间中取y值,靠前的空间存低位值,靠后的存高位值,因此,y=list[1]list[0]=0x3231;*y = 0x4241; //ascii码对应字符分别为B、A,逆序后存在list空间里应该是ABcout << "list:" << list[0]<<list[1] <<endl;//输出结果为AB,请思考为何不直接cout<getchar();return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部