vs中char类型变量取地址为乱码
代码:
char test;
std::cout<<"address for test:"<<&test<<std::endl;结果:
烫烫烫烫烫烫烫烫烫烫?
代码:
char test;
std::cout<<"address for test:"<<&test<<std::endl;结果:
烫烫烫烫烫烫烫烫烫烫?
解决方案 »
- 二值化图像保存问题
- 关于vector的问题
- 大家帮我分析一下招聘要求
- 关闭控制台程序时候,系统返回异常! 请高手指点
- 如何使List Box空件和CEditView自动翻页,谢谢指教!
- 请教:键盘上F1按键的功能屏蔽问题。
- 恕在下愚钝,一直用C/C++/WIN32,从没用过线程池,不知道这个东西是什么?
- 用过Teechart之PolarSeries的朋友请进
- 进程之间传输数据的所有方法有哪些?
- 一个怪问题:如何不用创建对话框而获得对话框资源IDD_****的大小?
- socket传送文件问题,sendto和send一次可以发多大的数据?recv和recvfrom一次可以接收多少数据?
- 一个简单的单文挡问题
std::cout <<"address for test:" <<(void*)&test <<std::endl;因为cout对于char*类型的直接输出内容,不是输出地址
std::cout < <"address for test:" < <(int)&test < <std::endl;
struct testMemory
{
int firstInt;
char secondChar;
long thirdLong;
double lastDouble;
};
int _tmain(int argc, _TCHAR* argv[])
{
testMemory tem;
std::cout<<"address for tem's firstInt:"<<&tem.firstInt<<" sizeof(int)="<<sizeof(tem.firstInt)<<std::endl;
std::cout<<"address for tem's secondChar:"<<((int)&tem.secondChar)<<" sizeof(char)="<<sizeof(tem.secondChar)<<std::endl;
std::cout<<"address for tem's thirdLong:"<<&tem.thirdLong<<" sizeof(long)="<<sizeof(tem.thirdLong)<<std::endl;
std::cout<<"address for tem's lastDouble:"<<&tem.lastDouble<<" sizeof(double)="<<sizeof(tem.thirdLong)<<std::endl;
system("pause");
return 0;
}
结果:
address for tem's firstInt:0012FF4C sizeof(int)=4
address for tem's secondChar:1245008(0012ff50) sizeof(char)=1
address for tem's thirdLong:0012FF54 sizeof(long)=4
address for tem's lastDouble:0012FF5C sizeof(double)=4
为什么secondChar后面跳了4呢(0012FF54-0012ff50)他不是占一个字节呢,关于自定义数据类型的具体内存分配是怎么样的呢?