麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

深入const int *p與int * const p的區別詳解(常量指針與指向常量的指針)

2020-01-26 16:01:13
字體:
來源:轉載
供稿:網友
對于指針和常量,有以下三種形式都是正確的:
復制代碼 代碼如下:

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 ) ;   //輸出是30
    i1=80;     //5.想想看:這里能用*pi=80;來代替嗎?可以,這里可以通過*pi修改i1的值。
    printf("%d/n", *pi ) ;   //輸出是80
    system("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 ) ;   //輸出是30
    pi=&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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 黄色片网站免费观看 | 久章草影院| 成人 精品 | 国产精品亚洲一区二区三区在线观看 | 欧美成人国产va精品日本一级 | 国产交换3p国产精品 | 久久久久久久久久久影视 | 狠狠操夜夜爱 | 国产美女精品视频 | 国产午夜亚洲精品理论片大丰影院 | 日产精品久久久一区二区福利 | 成人性生活视频在线观看 | 国产好片无限资源 | 国产午夜亚洲精品午夜鲁丝片 | 国产精品久久久久国产精品三级 | 日本欧美中文字幕 | 视频一区二区三区免费观看 | 在线成人免费网站 | 久久免费观看一级毛片 | 最新av在线播放 | 中文字幕亚洲欧美 | 中文字幕精品一二三四五六七八 | 91看片成人 | xxxx18韩国护士hd老师 | 国产精品成人av片免费看最爱 | 黄色av一区二区三区 | 国内久久久久 | 美女视频黄a视频免费全过程 | 激情综合在线 | 天天夜夜操操 | 国产毛片在线 | 男人午夜小视频 | 色阁五月| 国产在线1区| 伊人午夜| 久久精片 | av免费在线观看不卡 | h色网站在线观看 | 婷婷久久综合九色综合色多多蜜臀 | 91,视频免费看 | 久久精品免费国产 |