欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解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)文章

最新評論