指針常量和常量指針的區別
阿新 • • 發佈:2019-03-10
idt 表示 變量 ima http info 但是 out png
1、指針常量——指針類型的常量
在指針常量中,指針自身的值是一個常量,指針變量不允許修改。如同次指針指向一個地址該地址不能被修改,但是該地址裏的內容可以被修改定義格式如下:
int *const a=5; 或 int a,b; int * const p=&a ;
p=&b;//操作錯誤
例:
#include <iostream> using namespace std; int main() { int a = 3; int m[2] = { 1, 2 }; int *const c = &a;//指針常量 cout << "c的地址:" << c << "c的值:" << *c << endl; c[0]=m[0];//改變地址的內容是合法的 cout << "c的地址:" << c << "c的值:" << *c << endl; }
地址沒有改變,內容可以改變,輸出如下:
2、常量指針——指向“常量”的指針
常量指針本質上是一個指針,常量表示指針指向的內容,說明該指針指向一個“常量”。在常量指針中,指針指向的內容是不可改變的,指針看起來好像指向了一個常量。
int a = 1, b = 2; const int *p = &a;//等價於int const*p=&a; p = &b; // 指針可以指向其他地址,地址可以改變,內容不可改變
例:
#include <iostream> using namespace std; int main() { int a = 3; int m[6] = {0,2,3,6,9,5}; int const *c = &a;//const int*c = &a;常量指針 cout << "c的地址:" << c << " "<<"c的值:" << *c << endl; c = &m[3];//可以改變指向地址,不能改變內容(*c=m[3]操作錯誤) cout << "c的地址:" << c << " " << "c的值:" << *c << endl; }
運行結果如下:
指針常量和常量指針的區別