C++学习 小贴士(一)

const char* p & char* const p & const char* const p

最近学习c++中遇到一些小知识,没啥知识点,就是需要记住。

const char* p

解释 读作 non-const ponit 修饰 const value

因此不能通过指针修改value,可以修改 p本身。

1
2
3
4
5
6
7
8
9
{
char a = 'A', b = 'B';
const char* ptr = &a;
//*ptr = b; ierror
printf("value pointed to by ptr: %c\n", *ptr);
ptr = &b;
printf("value pointed to by ptr: %c\n", *ptr);
// ptr can be changed
}

char* const p

解释 读作 const ponit 修饰 non-const value

可以通过指针修改value吗,但是不能修改指针本身。

1
2
3
4
5
6
7
8
9
10
int main()
{
char a = 'A', b = 'B';
char* const ptr = &a;
//ptr = &b; error
printf("value pointed to by ptr: %c\n", *ptr);
*ptr = b;
printf("value pointed to by ptr: %c\n", *ptr);
// value can be changed
}

const char* const p

解释 读作 const ponit 修饰 const value

顾名思义 point 和value 都加上了 const修饰,因此指针和值都不能修改。

1
2
3
4
5
6
7
8
9
10
int main()
{
char a = 'A', b = 'B';
char* const ptr = &a;
//ptr = &b; error
printf("value pointed to by ptr: %c\n", *ptr);
//*ptr = b; error
printf("value pointed to by ptr: %c\n", *ptr);
// value can be changed
}

参考来源:https://www.geeksforgeeks.org/difference-const-char-p-char-const-p-const-char-const-p/