#include<stdio.h>
#include<iostream>
using namespace std;
class TestArrange
{
public:
long m_lng;
char m_ch1;
TestArrange()
{
m_lng = 0;
m_ch1 = 'a';
m_int = 0;
m_ch2 = 'a';
}
const int* GetIntAddr()
{
return &m_int;
}
const char* GetChar2Addr()
{
return &m_ch2;
}
private:
int m_int;
char m_ch2;
};
int main(void)
{
TestArrange test;
cout << "对象的地址:" << &test << endl;
cout << "m_lng地址:" << &(test.m_lng) << endl;
cout << "m_ch1地址:" << &(test.m_ch1) << endl;
cout << "m_int地址:" << test.GetIntAddr() << endl;
cout << "m_ch2地址:" << (void *)test.GetChar2Addr() << endl;
return 0;
}
cout << "m_ch1地址:" << &(test.m_ch1) << endl;
printf("m_ch1地址:%p\n",&(test.m_ch1));
[img]http://files.jb51.net/file_images/article/201709/201709270925476.png[/img] [/b]
为什么会出现这样现象,因为字符串是以空终止符('\0')结尾的字符数组,通过字符串中第一个字符的指针访问字符串。字符串的值是字符串中第一个字符的(常量)地址。&m_char1是一个char*变量,但&m_char1保存的字符串是没有终止符('\0'),因此输出乱码。 无论要输出哪一种变量地址,强制类型转换可以解决大多数问题,如上将char*转换为void*输出。 以上这篇浅谈C++中char型变量的地址输出就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程素材网。
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有