关于C++中char 型变量的地址输出

本文探讨了C++中char型变量地址输出的问题,通过示例解释了为什么*m_char1的输出地址会显示乱码,原因是&m_char1保存的字符串没有终止符('')。同时,建议使用强制类型转换解决类似问题。

在刚开始学习C/C++过程中,我们希望输出各个变量的地址来窥探一些我们“百思不得其解”的现象,例如搞清函数堆栈相关的程序内部秘密。

先看下面示例:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值