【转】const int *p和int * const p的区别(常量指针与指向常量的指针)
生活随笔
收集整理的這篇文章主要介紹了
【转】const int *p和int * const p的区别(常量指针与指向常量的指针)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【轉】作者:xwdreamer? ?出處:http://www.cnblogs.com/xwdreamer
?
?
對于指針和常量,有以下三種形式都是正確的:
const char * myPtr = &char_A;//指向常量的指針 char * const myPtr = &char_A;//常量的指針 const char * const myPtr = &char_A;//指向常量的常量指針下面依次對這三種類型進行介紹。
因為*操作符是左操作符,左操作符的優先級是從右到左,對于
1.常量指針(Constant Pointers)
int * const p先看const再看* ,是p是一個常量類型的指針,不能修改這個指針的指向,但是這個指針所指向的地址上存儲的值可以修改。
實例1:
#include<iostream> #include<stdlib.h> using namespace std;void main() {int i1=30;int i2=40;int * const pi=&i1;//這里的pi指針式常量。//pi=&i2; //注意這里,pi不能再這樣重新賦值了,即不能再指向另一個新地址。所以我已經注釋了它。printf("%d\n", *pi ) ; //輸出是30i1=80; //5.想想看:這里能用*pi=80;來代替嗎?可以,這里可以通過*pi修改i1的值。printf("%d\n", *pi ) ; //輸出是80system("pause"); }?
實例2:
char char_A = 'A'; char char_B = 'B';char * const myPtr = &char_A; myPtr = &char_B; // error - can't change address of myPtr?
2.指向常量的指針(Pointers to Constants)
const int *p先看*再看const,定義一個指針指向一個常量,不能通過指針來修改這個指針指向的值。
實例3:
#include<iostream> #include<stdlib.h> using namespace std;void main() {int i1=30;int i2=40;const int * pi=&i1;printf("%d\n", *pi ) ; //輸出是30pi=&i2; //注意這里,pi可以在任意時候重新賦值一個新內存地址i2=80; //想想看:這里能用*pi=80;來代替嗎?當然不能printf("%d\n", *pi ) ; //輸出是80 system("pause"); }實例4:
char char_A = 'A'; const char * myPtr = &char_A; *myPtr = 'J'; // error - can't change value of *myPtr?所以指針p所指向的整型數是一個常量,其值不能被修改。
?3.指向常量的常量指針
對于“指向常量的常量指針”,就必須同時滿足上述1和2中的內容,既不可以修改指針的值,也不可以修改指針指向的值。
4.引入字符數組和字符指針
字符數組和字符指針的定義如下:
char a[] = "I Love You!"; //定義了一個字符數組 char *p = "I Love You!"; //定義了一個字符指針可以將a理解為常量指針,而p為指向常量的指針,代碼實例如下:
#include<iostream> #include<stdlib.h> using namespace std;void main() {char a[] = "I Love You!"; //定義了一個字符數組,數組名a是一個常量指針,指向的位置不變,都是數組第一個元素的位置char *p = "I Love You!"; //定義了一個字符指針,指針p指向一個字符串常量,這個字符串常量不能修改//*(p+1)='a';//錯誤,不可以修改指針指向的值,所以這里注釋掉。a[1]='a';//常量指針,不能修改指針的值,但是可以修改指針所指向的值。//a=p;//錯誤,a是常量指針,不可修改其值。cout<<a<<endl;cout<<p<<endl;cout<<a[1]<<endl;cout<<*(p+2)<<endl;system("pause"); }?
輸出值為:
IaLove You!
I Love You!
a
L
?
轉載于:https://www.cnblogs.com/liez/p/5484860.html
總結
以上是生活随笔為你收集整理的【转】const int *p和int * const p的区别(常量指针与指向常量的指针)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: input hidden用法
- 下一篇: jta 知识