所以我这样做的基本想法是这种循环:
std::array<int,10> t{};
for (int k = t.size()-1; k >= 0; k--)
cout << t[k] << " ";
Run Code Online (Sandbox Code Playgroud)
问题是 .size() 方法返回一个 std::array::size_type,从我读过的内容来看,它可能比 int 大。
问题是 size_type 是无符号的,所以当我这样做时:
for (auto k = t.size()-1; k >= 0; k--)
cout << t[k] << " ";
Run Code Online (Sandbox Code Playgroud)
它只是无限循环,因为 k 不能为负。那么你将如何使用 size_type 变量迭代 std::array 或 std::vector backwars 呢?
所以我正在阅读 learncpp 教程,并且我试图打印 char 指针的地址,因为当你这样做时:
char c{'i'};
cout << &c << endl;
Run Code Online (Sandbox Code Playgroud)
它只会打印字符串“i”,因为我猜编译器会识别一个指向字符数组的字符指针,这是一个字符串(但是我不明白为什么它只打印“i”,因为没有 '\0 ' 在字符“i”之后)。
不管怎样,我然后尝试将 char 指针静态转换为 int 指针,以便打印地址:
char c{'i'};
cout << static_cast<int*>(&c) << endl;
Run Code Online (Sandbox Code Playgroud)
但这甚至无法编译,我有一个错误“从类型 << char* >> 到类型 << int* >> 的 static_cast 无效”。
最后,我简单地尝试了这样的 C 类型转换:
char c{'i'};
cout << (int*)(&c) << endl;
Run Code Online (Sandbox Code Playgroud)
它起作用了,它打印了一个地址。
所以我的问题是:
谢谢