目录
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;