const char * and char *
const char * and char *
我明白
char *s = "Hello World!" ;
存储在只读内存中,不能通过指针修改字符串字面值。
这和
有什么不同?const char *s = "Hello World!";
也是'string' char *或const char *的类型?
区别在于后者是合法的,而前者不是。这是c++ 11中做的一个更改。形式上,"Hello World!"
具有const char[13]
类型;可转化为const char*
。在过去,它的类型可以是char[13]
,可以转换为char*
。c++通过添加const
改变了数组的类型,但保留了对char*
的转换,以便使用char*
的现有C代码可以在c++中工作,但修改指针指向的文本会产生未定义的行为。c++ 11删除了到char*
的转换,所以现在你只能合法地执行
const char *s = "Hello world!";
通过将类型指定为const char *
,可以使意外覆盖内存变得更加困难,因为如果您尝试:
const char *s = "Hello World!";
s[0] = 'X'; // compile error
如果您不使用const
,那么问题可能直到运行时才被捕获,或者它可能只是导致您的程序出现微妙的错误。
相关文章:
- 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++