【c++】cout打印char * 或者char[]的细节详解

目录

 char* 类型

1.打印指向的字符串

2.打印指针指向的地址

问题描述

解决方法

char型数组

 1. 想要输出字符串

2. 想输出字符数组的地址

printf 和cout 的对比

1.打印首字符

2.打印字符串

3.打印字符串首地址

💗感谢阅读!💗


 char* 类型

1.打印指向的字符串

使用cout输出 指针,会直接打印指针指向的具体内容!

const char* a = "abcd";
cout << a << endl;

2.打印指针指向的地址

问题描述

c++中如果给cout提供一个指针,它将输出该指针指向的地址(指针和地址在表现形式上是一样的)

但是如果该指针的类型是char*或者uchar*,则cout会打印该指针指向的具体内容!!

如图,就出现了以上情况。

解决方法

如果要打印char*或者uchar*所指向的地址,强制转换成 int*  或者 void*  即可

const char* a = "abcd";
cout << a << endl;

cout << "int*强转:" << (int*)a << endl;
cout << "void*强转:" << (void*)a << endl;


char型数组

 1. 想要输出字符串

采用 cout<<数组名; 系统会将数组当作字符串来输出,如:

char b[] = "abcdef";
cout << b << endl;

2. 想输出字符数组的地址

则需要进行强制转换,添加 void*  或者  int*  如:

char b[] = "abcdef";
cout << b << endl;

cout << "强转:" << (void*)b << endl;
cout << "强转:" << (int*)b << endl;

printf 和cout 的对比

相比于cout ,printf可以根本解决问题,并且使用更加清晰!

1.打印首字符

const char* a = "abcd";

printf("首字符:%c\n", *a);
cout << *a << endl;

2.打印字符串

const char* a = "abcd";

printf("字符串:%s\n", a);
cout << a << endl;

3.打印字符串首地址

const char* a = "abcd";

printf("a存储的地址: %p\n", a);	
cout << "int*强转:" << (int*)a << endl;
cout << "void*强转:" << (void*)a << endl;

 全部总结:

const char* a = "abcd";
cout << a << endl;

printf("首字符:%c\n", *a);
cout << *a << endl;

printf("字符串:%s\n", a);
cout << a << endl;


printf("a存储的地址: %p\n", a);	
cout << "int*强转:" << (int*)a << endl;
cout << "void*强转:" << (void*)a << endl;

💗感谢阅读!💗


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

景鹤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值