char *p;cout<<P;为什么不是地址,而是数组里存的字符串,和int *p不一样?

来源:3-7 运算符表达式和基本语句--杂项运算符及运算符的优先级

厦门黄猫编程

2021-11-08

#include
using namespace std;
int main(){
char a[10]=“hello”;
char *p=a;
cout<<p;
return 0;
}

写回答

2回答

quickzhao

2021-11-08

C语言中的字符数组是比较特殊的,某种程度上是出于对效率的考虑,在传递数组信息时通常传递首地址。

1
4
quickzhao
回复
厦门黄猫编程
比较简单的方法可以这样:cout << reinterpret_cast(a) << endl; 强制类型转换,让cout只能以地址的方式输出就可以。
2021-11-08
共4条回复

quickzhao

2021-11-08

数组名本质上来说就是char const *的类型,也就是说数组名是一种特殊的指针。


0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程