本文主要是介绍【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;
💗感谢阅读!💗
这篇关于【c++】cout打印char * 或者char[]的细节详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!