Char* pointers and char[]
Char* pointers and char[]
我正在C++中学习指针,在int*、double*等方面做得很好,但后来我尝试了一些我无法理解的东西。我已经附上了我的代码段,注释是终端输出。
char word[] = "Hello there";
cout << word << endl; //Hello there
cout << *word << endl; //H
cout << &word << endl; //Address
char *wordpt = word;
cout << wordpt << endl; //Hello there
cout << *wordpt << endl; //H
cout << &wordpt << endl; //Address
wordpt = &word[0];
cout << wordpt << endl; //Hello there
cout << *wordpt << endl; //H
cout << &wordpt << endl; //Address
这些是怎么回事?我甚至不明白contents of word
(*word
)怎么可能是一个单独的索引。word
是如何存储在内存中的?为什么wordpt
允许我给它一个值word
,这不是一个地址?
第一种情况下的指针wordpt
指向数组word
的第一个元素,第二个赋值完全相同,但显式。
数组会自动转换为指向其第一个元素的指针,这是由c标准指定的,该标准也适用于c++。
让您感到困惑的是,cout
会自动打印char *
指针的内容,而不是指针指向的地址。要做到这一点,有一个要求,指向的数据必须是一个c字符串,即一个非nul
字节的序列,后面跟着一个nul
字节,这就是存储在word
中的内容。
因此cout
正在访问wordpt
指针所指向的数据。
相关文章:
- C++ const char with .begin() and .end()
- 指针混乱char* and int*
- Concatenate char[] and uint32_t in C++
- getline() and char array
- Unicode const char* to JString using JNI and C++
- Char* pointers and char[]
- std::string and const char *
- jni String to *char and java.lang.UnsatisfiedLinkError:
- Evaluate an int, char and int
- RegSetValueEx and CHAR
- While loop and char
- Interchanging const char* and std::string
- Char size and const void*
- While loop and cin char, int
- C++ 连接字符串会导致"invalid operands of types ‘const char*’ and ‘const char"
- const char * and char *
- char * and char[]
- char* and cin in C++
- string and const char* and .c_str()?
- char and String in c++