C++ 指向常量的指针和指向某物的常量指针
两者的区别是什么C++ 指向常量的指针和指向某物的常量指针,c++,pointers,constants,C++,Pointers,Constants,两者的区别是什么 const int d=1; const int *p = &d; 及 我能用前者和后者做什么?没有区别,它们完全相同 语言的语法只允许某些结构有一定的自由度,类型的CV限定就是其中之一。还有其他示例(例如,声明如foo typedef int;)。没有区别,它们完全相同 语言的语法只允许某些结构有一定的自由度,类型的CV限定就是其中之一。还有其他示例(例如声明,如foo typedef int;)。const int*p 上面的声明声明了一个指向常量int的指针p。
const int d=1;
const int *p = &d;
及
我能用前者和后者做什么?没有区别,它们完全相同
语言的语法只允许某些结构有一定的自由度,类型的CV限定就是其中之一。还有其他示例(例如,声明如
foo typedef int;
)。没有区别,它们完全相同
语言的语法只允许某些结构有一定的自由度,类型的CV限定就是其中之一。还有其他示例(例如声明,如
foo typedef int;
)。const int*p代码>
上面的声明声明了一个指向常量int
的指针p
。换句话说,您不能更改refereand的值,但可以更改p
本身
int*const p代码>
上面的声明声明了一个指向int
的常量指针p
。换句话说,您可以更改refereand的值,但不能更改p
。而且
const int d = 1;
int * const p = &d;
这是不合法的。获取d
的地址将产生const int*
,并且不允许从const int*
转换为int*
(如果常量对象的值为空,您可能会无意中更改它的值)
您可以使用const\u cast
显式进行转换:
const int d = 1;
int * const p = const_cast<int*>(&d);
const int d=1;
int*const p=const_cast(&d);
但通过p
const int*p更改d
的值仍然是非法的(未定义的行为)代码>
const int *p;
上面的声明声明了一个指向常量int
的指针p
。换句话说,您不能更改refereand的值,但可以更改p
本身
int*const p代码>
上面的声明声明了一个指向int
的常量指针p
。换句话说,您可以更改refereand的值,但不能更改p
。而且
const int d = 1;
int * const p = &d;
这是不合法的。获取d
的地址将产生const int*
,并且不允许从const int*
转换为int*
(如果常量对象的值为空,您可能会无意中更改它的值)
您可以使用const\u cast
显式进行转换:
const int d = 1;
int * const p = const_cast<int*>(&d);
const int d=1;
int*const p=const_cast(&d);
但是通过p
更改d
的值仍然是非法的(未定义的行为)
const int *p;
p
是指向常量整数的指针。您可以更改存储在p
中的值(因此它指向其他地方),但不能更改p
指向的值
int* const p;
p
是指向非常量整数的常量指针。不能更改p
的值,但要更改其指向的整数
p
是指向常量整数的指针。您可以更改存储在p
中的值(因此它指向其他地方),但不能更改p
指向的值
int* const p;
p
是指向非常量整数的常量指针。您不能更改p
的值,但可以更改它指向的整数。请注意int*const p
不同。请注意int*const p
不同。