捋一捋 const char * p / char* const p / char const* p

简介: const int *p 与 int const *p 是一样的,即 *p 是常量;而 int * const p 跟上面是不一样的,即 p 是常量;我们知道引用只是一个别名,与变量共享存储空间,并且必须在定义的时候初始化,而且不能再成为别的变量的别名,这让我们想到什么呢,貌似跟  int * const p   的性质很像。

const int *p 与 int const *p 是一样的,即 *p 是常量

而 int * const p 跟上面是不一样的,即 p 是常量

我们知道引用只是一个别名,与变量共享存储空间,并且必须在定义的时候初始化,而且不能再成为别的变量的别名,这让我们想到什么呢,貌似跟  int * const p   的性质很像。

其实引用的底层就是用const指针来实现的

 

const int *p1;
// p1 is a non-const pointer and points to a const int

int *const p2;
// p2 is a const pointer and points to a non-const int

const int *const p3;
// p3 is a const pointer and points to a const it

const int *pa1[10];
// pa1 is an array and contains 10 non-const pointer point to a const int

int *const pa2[10];
// pa2 is an array and contains 10 const pointer point to a non-const int

const int (* p4)[10];
// p4 is a non-const pointer and points to an array contains 10 const int

const int (*pf)();
// pf is a non-const pointer and points to a function which has no arguments and returns a const int

const *char prt 指的是prt所指的地址上的内容,不能通过prt指针进行部分修改

char * const prt 指的是prt所指向的地址,不能修改

char  const  * prt 和 const *char prt 是一样的。

相关文章
C++ --- error C2664: “LoadLibraryW”: 不能将参数 1 从“const char *”转换为“LPCWSTR”
C++ --- error C2664: “LoadLibraryW”: 不能将参数 1 从“const char *”转换为“LPCWSTR”
303 0
|
5月前
|
C++
E0144 “const char *“ 类型的值不能用于初始化 “char *“ 类型的实体
E0144 “const char *“ 类型的值不能用于初始化 “char *“ 类型的实体
|
6月前
|
C++
【C++】std::string 转换成非const类型 char* 的三种方法记录
【C++】std::string 转换成非const类型 char* 的三种方法记录
170 0
|
6月前
|
C++
无法将参数1从“const char [6]”转换为“char *”的解决方法
无法将参数1从“const char [6]”转换为“char *”的解决方法
|
关系型数据库 MySQL C++
类型收窄 error C2397: conversion from ‘const int‘ to ‘char‘ requires a narrowing conversion
类型收窄 error C2397: conversion from ‘const int‘ to ‘char‘ requires a narrowing conversion
183 0
|
C++
VS:无法将“char *”转换为“const wchar_t *”/不能将参数从“const char []”转换为“const wchar_t *”
VS:无法将“char *”转换为“const wchar_t *”/不能将参数从“const char []”转换为“const wchar_t *”
183 0
VS:无法将“char *”转换为“const wchar_t *”/不能将参数从“const char []”转换为“const wchar_t *”
map使用const char*作为key值查找注意事项
map使用const char*作为key值查找注意事项
error C2664: “StrCmpW”: 不能将参数 2 从“const char [12]”转换为“PCWSTR”
error C2664: “StrCmpW”: 不能将参数 2 从“const char [12]”转换为“PCWSTR”
117 0
vs2017 :C2440 错误,无法从 const char[] 转换为 char*问题解决
vs2017 :C2440 错误,无法从 const char[] 转换为 char*问题解决
1013 0
vs2017 :C2440 错误,无法从 const char[] 转换为 char*问题解决