const char* ptr和char* ptr
时间: 2023-08-30 18:09:37 浏览: 70
`const char* ptr` 是一个指向 `const char` 类型数据的指针,意味着指针所指向的数据是不可修改的。例如:
```
const char* ptr = "Hello";
```
在上面的例子中,`ptr` 指向了一个字符数组,但是因为它是一个 `const char*` 类型的指针,所以我们不能通过 `ptr` 来修改这个字符数组。
而 `char* ptr` 是一个指向 `char` 类型数据的指针,意味着指针所指向的数据是可修改的。例如:
```
char str[] = "Hello";
char* ptr = str;
```
在上面的例子中,`ptr` 指向了一个字符数组 `str`,并且我们可以通过 `ptr` 来修改这个字符数组。
相关问题
const char*和char*的区别
在C++中,`const char*`和`char*`都是指向字符数组的指针,但是它们的区别在于指针所指向的字符数组是否可以被修改。
`char*`是一个指向字符数组的指针,可以通过它来修改所指向的字符数组。例如:
```cpp
char str[] = "Hello World";
char* ptr = str; // ptr指向字符数组str
*ptr = 'h'; // str数组的第一个字符被修改为小写的'h'
```
而`const char*`是一个指向字符数组的指针,但是它指向的字符数组是只读的,不能通过它来修改所指向的字符数组。例如:
```cpp
const char* str = "Hello World";
char ch = *str; // 可以通过指针读取字符数组的内容
*str = 'h'; // 编译错误,不能通过指针修改字符数组的内容
```
因此,如果你不想修改指针所指向的字符数组,应该使用`const char*`类型的指针。
char*与const char*
char*和const char*都是指向字符数组的指针,但是它们之间有一些重要的区别。char*指针可以用于修改指向的字符数组,而const char*指针则不能修改指向的字符数组。
下面是一个例子,演示了char*和const char*之间的区别:
```c++
#include <iostream>
#include <cstring>
int main() {
char str1[] = "Hello";
char* ptr1 = str1;
std::cout << "Before modification: " << ptr1 << std::endl;
ptr1[0] = 'h';
std::cout << "After modification: " << ptr1 << std::endl;
const char* str2 = "World";
const char* ptr2 = str2;
std::cout << "Before modification: " << ptr2 << std::endl;
// 下面这行代码会导致编译错误
// ptr2[0] = 'w';
std::cout << "After modification: " << ptr2 << std::endl;
return 0;
}
```
输出结果为:
```
Before modification: Hello
After modification: hello
Before modification: World
After modification: World
```
可以看到,通过char*指针可以修改指向的字符数组,而通过const char*指针则不能修改指向的字符数组。