我正在尝试使用char数组,然后我尝试运行这个程序:
#include <iostream>
using namespace std ;
int main ( )
{
char *str = "Hello!" ;
cout << &str[0] << endl ;
cout << &str[1] << endl ;
cout << &str[2] << endl ;
cout << &str[3] << endl ;
cout << &str[4] << endl ;
return 0 ;
}
我一直得到这些输出:
Hello!
ello!
llo!
lo!
o!
这到底发生了什么?我期待十六进制值。
答案 0 :(得分:5)
当你获取数组元素的地址时,你会得到一个指向数组的指针。
在c++
中,与c
一样,字符数组(或指向字符的指针)被解释为字符串,因此字符将打印为字符串。
如果您想要地址,只需将演员表添加到(void *)
。
#include <iostream>
using namespace std ;
int main ( )
{
const char *str = "Hello!" ;
cout << (void*) &str[0] << endl ;
cout << (void*) &str[1] << endl ;
cout << (void*) &str[2] << endl ;
cout << (void*) &str[3] << endl ;
cout << (void*) &str[4] << endl ;
return 0 ;
}
答案 1 :(得分:3)
假设char *
是C风格的字符串。您需要强制转换为void *
以获取指针值。
(你错过了const
- 字符串文字是不可变的。)