亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入理解C語言中指針常量和常量指針

 更新時間:2024年12月18日 12:01:47   作者:析木不會編程  
本文介紹了C語言中的指針常量和常量指針,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

指針常量和常量指針是兩個完全不同的概念,其核心是表示不同內(nèi)存訪問權(quán)限。

const

const關(guān)鍵詞用于定義一個常量為只讀的,它表示該變量的值在初始化后不能被修改。

常量指針

常量指針是指指向常量的指針,其本質(zhì)是指針。常量指針的指針本身可以改變,但不能通過該指針修改所指向的值。

常量指針形式有兩種:

const 數(shù)據(jù)類型 *指針名
數(shù)據(jù)類型 const *指針名

例如: 

const int *ptr;

在這個聲明中,ptr是一個指向int型常量的指針。但由于有const的修飾,ptr指向的常量在初始化之后在哪讀取,不能修改。

示例代碼:

#include <stdio.h>

void main() {
    int a = 10;
    int b = 20;
    const int *ptr = &a;

    printf("ptr: %d\n", *ptr);//輸出10

    ptr = &b; 
    printf("ptr: %d\n", *ptr);//輸出20

    //*ptr++;    //錯誤:常量指針不能通過指針修改其指向的值
    //*ptr=30;   //錯誤:常量指針不能通過指針修改其指向的值
}

在這個示例中,指針前后分別指向了a和b的地址,既指針本身是可以改變的,但我們只能去讀取這個值,無法通過指針來修改指針指向常量的值。

*ptr++;    
*ptr=30;

這里有兩個新手容易出現(xiàn)的誤區(qū)

指針可以改變的意思是,指針指向的地址可以改變,地址改變既指向的內(nèi)容也會改變,并不是值指針改變了,還是指向同一個常量。

常量指針指向的值只是不能夠通過指針改變,并不代表該變量不能改變。

int a=10;
const int *ptr=&a;

*ptr++;//不合法,不允許的
a++;//合法的,可以的

不能通過ptr指針修改a的值,但a可以自己去修改

指針常量

指針常量是指針本身是常量,即指針一旦初始化后就不能改變其指向。

指針常量其形式是:

數(shù)據(jù)類型 *const 指針名

例如:

int * const ptr;

在這個示例代碼中,ptr是一個指針常量,其ptr指向的地址是不能改變的,但其指向的值是可以改變的。

示例代碼:

#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;
    int * const ptr = &a; 

    printf("ptr: %d\n", *ptr); //輸出: 10

    *ptr = 30; // 賦值30
    printf("ptr: %d\n", *ptr); //輸出: 30

    // ptr = &b; // 錯誤:ptr是指針常量,初始化確定了其指向地址就不能二次賦值或修改

    return 0;
}

在這個示例中,指針常量ptr初始化是指向a的,我們可以通過*ptr修改其指向數(shù)值的值,但不能修改ptr指向的地址,既該指針指向的地址視為一個常量,不可再修改。

常量指針常量

將常量指針和指針常量復(fù)合,既初始化之后,指針指向的地址及其指向的值,均只能讀取,不能修改。其形式為:

const 數(shù)據(jù)類型 * const 指針名;

例如:

const int * const ptr;

示例代碼:

#include <stdio.h>

int main() {
    int a = 10;
    const int * const ptr = &a; // ptr 是指向a的常量指針常量

    printf("ptr: %d\n", *ptr); // Output: 10

    // *ptr = 30; //錯誤:ptr指向的值不能修改
    // ptr = &b; // 錯誤:ptr指向的地址不能修改

    return 0;
}

總結(jié)

常量指針和指針常量最重要的是其訪問權(quán)限,一句話概括就是:常量指針指針地址可改,指向的值只能讀;指針常量指針地址不可改只能讀,指向的值可以改。

到此這篇關(guān)于深入理解C語言中指針常量和常量指針的文章就介紹到這了,更多相關(guān)C語言指針常量和常量指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++運算符重載規(guī)則詳解

    C++運算符重載規(guī)則詳解

    這篇文章主要介紹了C++運算符重載規(guī)則詳解,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C++設(shè)計模式編程中Facade外觀模式的使用實例解析

    C++設(shè)計模式編程中Facade外觀模式的使用實例解析

    這篇文章主要介紹了C++設(shè)計模式編程中Facade外觀模式的使用實例解析,外觀模式的主要用途就是為子系統(tǒng)的復(fù)雜處理過程提供方便的調(diào)用方法,需要的朋友可以參考下
    2016-03-03
  • C++ normal_distribution高斯正態(tài)分布函數(shù)的用法示例

    C++ normal_distribution高斯正態(tài)分布函數(shù)的用法示例

    高斯分布也稱為正態(tài)分布(normal distribution),常用的成熟的生成高斯分布隨機數(shù)序列的方法由Marsaglia和Bray在1964年提出,這篇文章主要給大家介紹了關(guān)于C++ normal_distribution高斯正態(tài)分布函數(shù)用法的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • QT quick-Popup彈出窗口自定義的實現(xiàn)

    QT quick-Popup彈出窗口自定義的實現(xiàn)

    本文主要介紹了QT quick-Popup彈出窗口自定義的實現(xiàn),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • C++中類的構(gòu)造函數(shù)初始值列表解讀

    C++中類的構(gòu)造函數(shù)初始值列表解讀

    這篇文章主要介紹了C++中類的構(gòu)造函數(shù)初始值列表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++11中隱式類型轉(zhuǎn)換的實現(xiàn)示例

    C++11中隱式類型轉(zhuǎn)換的實現(xiàn)示例

    C++類型轉(zhuǎn)換分為:隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換,本文主要介紹了C++11中隱式類型轉(zhuǎn)換的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • C++處理圖存儲的方式分享

    C++處理圖存儲的方式分享

    這篇文章主要介紹了C++處理圖存儲的方式分享,文章圍繞鄰接矩陣、鄰接表、鏈式前向的主題展開詳細內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • C語言中斐波那契數(shù)列的三種實現(xiàn)方式(遞歸、循環(huán)、矩陣)

    C語言中斐波那契數(shù)列的三種實現(xiàn)方式(遞歸、循環(huán)、矩陣)

    本文主要介紹了C語言中斐波那契數(shù)列的三種實現(xiàn)方式(遞歸、循環(huán)、矩陣),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言單值二叉樹真題講解

    C語言單值二叉樹真題講解

    單值二叉樹你可能之前沒見過,如果二叉樹每個節(jié)點都具有相同的值,那么該二叉樹就是單值二叉樹,讓我們通過一個真題來深刻了解它吧
    2022-04-04
  • mingw編譯的windows命令行貪吃蛇示例

    mingw編譯的windows命令行貪吃蛇示例

    這篇文章主要介紹了mingw編譯的windows命令行貪吃蛇示例,需要的朋友可以參考下
    2014-04-04

最新評論