字符和字符串 char字符取地址给 char* 的问题

 char字符取地址给 char*  的问题

在这里看一段代码

        char ch = 'z';
	char *ptr_ch = &ch;
	cout<< ptr_ch <<endl;

看上去应该会输出地址,但是其实

 

先输出了字符z中间乱码,最后又输个a。

原因就是如果指针类型是int*或double*这里数值型的输出的肯定是地址。而对于char*,在c++中就当成字符串就是通过指针连续打印只到遇到'\0'结束,这里是'\0'字符指针不知道指向哪就出现了乱码。我们看如果是字符串

        char *ch = "z";
	char* ptr_ch = ch;
	cout<< ptr_ch<<endl;

//输出为z

字符串char* 是编译器会默认给补'\0'的。也就是char *的指针变量是会输出字符串的,如果要输出地址,加(void*)强制转换

        char ch = 'z';
	char* ptr_ch = ch;
	cout<< (void*)ptr_ch<<endl;

//输出为Ox61ff0b

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值