C++ C++;:阵列和内存位置

C++ C++;:阵列和内存位置,c++,arrays,C++,Arrays,一系列的人物总是能引起我的兴趣 让我们创建整数类型的数组- int a[]={1,2,34}; cout<<a; 给我们C++作为显示器,很有意思 1)那么,当与cout一起使用时,为什么字符数组不显示其内存位置呢 2)如何找到字符数组的位置 所有帮助将不胜感激:) 新手C++,有学习< /P>的意愿 “1)那么,当与cout一起使用时,为什么字符数组不显示其内存位置?” 有一个专门的过载 std::ostream& operator<<(std::ostrea

一系列的人物总是能引起我的兴趣

让我们创建整数类型的数组-

int a[]={1,2,34};
cout<<a;
给我们
C++
作为显示器,很有意思

1)那么,当与cout一起使用时,为什么字符数组不显示其内存位置呢

2)如何找到字符数组的位置

所有帮助将不胜感激:)

新手C++,有学习< /P>的意愿 “1)那么,当与cout一起使用时,为什么字符数组不显示其内存位置?”

有一个专门的过载

std::ostream& operator<<(std::ostream&, const char*);
或者只需按照中的建议为地址运算符添加前缀


cout下面是操作符的两个重载首先要考虑的是,没有
操作符Fwiw,
std::cout@ravi是故意这样写的!
std::ostream& operator<<(std::ostream&, const char*);
char a[]="C++";
cout << (void*)a;
cout << &a;
std::ostream& operator<<(std::ostream&, const char*);  // _1
std::ostream& operator<<(std::ostream&, void*);  //       _2

int arr[] = {1,2,3};
cout << arr;             // This would invoke _2

char arr[] = "Hello";
cout << arr;             // This would invoke _1

char arr[] = "Hello";
cout << (void*)arr;      // This would invoke _2
cout << &arr;
int a[] = { 1, 2, 34 };
cout << a;
basic_ostream<charT,traits>& operator<<(const void* p);
template<class traits>
basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,
const char*);
char a[] = "C++";
cout << static_cast<const void *>( a );