最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言一級指針二級指針和三級指針區(qū)別及使用詳解

 更新時間:2023年05月19日 10:27:47   作者:前端跑起來  
這篇文章主要為大家介紹了C語言一級指針二級指針和三級指針,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1.一級指針

#include?<stdio.h>
int?main(){
?int?data?=?10;
?int?*p1?=?&data;?//?p1?=?&data
?printf("data的地址是:%p\n",?&data);
?printf("p1指針變量地址是:%d,內(nèi)容是%d\n",?p1,?*p1);
?//?通過指針修改變量值
?printf("\n");
?*p1?=?20;
?printf("data=%d,?*p1=%d\n",?data,?*p1);
?return?0;
}

運行結果如下:

data的地址是:00AFFB18

p保存的data的地址是:11533080,內(nèi)容是10

data=20, *p1=20

一級指針的用法其實是取數(shù)據(jù)的地址,以此類推,二級指針就是取一級指針的地址,也可以表示一級指針的指向的內(nèi)容。

2.二級指針

指針變量也是一種變量,也會占用存儲空間,也可以使用&獲取它的地址。C語言不限制指針的級數(shù),每增加一級指針,在定義指針變量時就得增加一個星號*。p1是一級指針,指向普通類型的數(shù)據(jù),定義時只有一個*;p2是二級指針,指向一級指針p1,定義時需要兩個*。

它們關系如下所示:

上圖關系所示:data是int類型變量,p1是指向data的指針變量,p2又是指向p1的指針變量。

假設a、p1、p2、p3的地址分別為0x00A0、0x0010、0x0020、0x0030。它們之間的關系可以用下圖描述:

根據(jù)上圖描述的邏輯,代碼表示如下:

#include?<stdio.h>
int?main(){
?int?data?=?10;
?int?*p1?=?&data;
?int?**p2?=?&p1;
?printf("%d,?%d,?%d\n",?data,?*p1,?**p2);
?printf("&p1=%#X,?p2=%#X\n",?&p1,?p2);?//?p1的地址為p2的值
?printf("&data=%#X,?p1=%#X\n",?&data,?p1);?//?data的地址為p1的值
?return?0;
}

運行結果如下所示:

10, 10, 10

&p1=0X12FFE94, p2=0X12FFE94

&data=0X12FFEA0, p1=0X12FFEA0

**p2等價于(*(*p2)),

3.三級指針

以此類推,一級指針加一個*,二級指針增加兩個*,三級指針增加三個*。

我們可以先用圖去梳理指針之間的關系:

假設a、p1、p2、p3的地址分別為0x00A0、0x0010、0x0020、0x0030。它們之間的關系可以用下圖描述:

根據(jù)上圖描述的邏輯,代碼表示如下:

#include?<stdio.h>
int?main(){
?int?a?=?100;
?int?*p1?=?&a;
?int?**p2?=?&p1;
?int?***p3?=?&p2;
?printf("%d,?%d,?%d,?%d\n",?a,?*p1,?**p2,?***p3);
?printf("&p2?=?%#X,?p3?=?%#X\n",?&p2,?p3);
?printf("&p1?=?%#X,?p2?=?%#X,?*p3?=?%#X\n",?&p1,?p2,?*p3);
?printf("?&a?=?%#X,?p1?=?%#X,?*p2?=?%#X,?**p3?=?%#X\n",?&a,?p1,?*p2,?**p3);
?return?0;
}

100, 100, 100, 100

&p2 = 0XC2FB7C, p3 = 0XC2FB7C

&p1 = 0XC2FB88, p2 = 0XC2FB88, *p3 = 0XC2FB88

&a = 0XC2FB94, p1 = 0XC2FB94, *p2 = 0XC2FB94, **p3 = 0XC2FB94

以三級指針 p3 為例來分析上面的代碼。***p3等價于*(*(*p3))。*p3 得到的是 p2 的值,也即 p1 的地址;*(*p3) 得到的是 p1 的值,也即 a 的地址;經(jīng)過三次操作后,*(*(*p3)) 得到的是 a 的值。

以上就是C語言一級指針二級指針和三級指針區(qū)別及使用詳解的詳細內(nèi)容,更多關于C語言一級二級三級指針的資料請關注腳本之家其它相關文章!

相關文章

  • c++中為什么不提倡使用vector示例詳解

    c++中為什么不提倡使用vector示例詳解

    這篇文章主要給大家介紹了關于c++中為什么不提倡使用vector的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用c++具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • C++中std::invalid_argument報錯解決

    C++中std::invalid_argument報錯解決

    在C++編程中,std::invalid_argument是一個常見的異常,用于指示函數(shù)參數(shù)無效,文章詳細解析了這一異常的產(chǎn)生原因,并提供了多種解決策略,感興趣的可以了解一下
    2024-09-09
  • c++ 探討奶牛生子的問題

    c++ 探討奶牛生子的問題

    一只剛出生的奶牛,第4年開始生一只奶牛(假設只生母牛),以后每年生一只。現(xiàn)在給你一只剛出生的奶牛,求20年后有多少奶牛
    2013-05-05
  • C++實現(xiàn)多線程查找文件實例

    C++實現(xiàn)多線程查找文件實例

    這篇文章主要介紹了C++實現(xiàn)多線程查找文件實例,對于深入學習C++程序設計有著很好的參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C語言中結構體和共用體實例教程

    C語言中結構體和共用體實例教程

    這篇文章主要給大家介紹了關于C語言中結構體和共用體的相關資料,結構體是一種自定義的復合數(shù)據(jù)類型,共用體也叫聯(lián)合體,使幾個不同類型的變量共占一段內(nèi)存(相互覆蓋),需要的朋友可以參考下
    2021-06-06
  • C++?基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍及原理分析

    C++?基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍及原理分析

    這篇文章主要介紹了C++?基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍及原理分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++泛型算法的一些總結

    C++泛型算法的一些總結

    以下是對C++中的泛型算法進行了總結介紹。需要的朋友可以過來參考下
    2013-08-08
  • C++實現(xiàn)LeetCode(102.二叉樹層序遍歷)

    C++實現(xiàn)LeetCode(102.二叉樹層序遍歷)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(102.二叉樹層序遍歷),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++哈希表之線性探測法實現(xiàn)詳解

    C++哈希表之線性探測法實現(xiàn)詳解

    線性探測法的優(yōu)點:只要散列表未滿,總能找到一個不沖突的散列地址;缺點:每個產(chǎn)生沖突的記錄被散列到離沖突最近的空地址上,從而又增加了更多的沖突機會
    2022-05-05
  • C++ 常量成員常量返回值詳解

    C++ 常量成員常量返回值詳解

    這篇文章主要介紹了C++ 常量成員常量返回值詳解,需要的朋友可以參考下
    2017-06-06

最新評論

滦南县| 澄迈县| 茌平县| 焦作市| 洛隆县| 荔浦县| 曲靖市| 义乌市| 龙南县| 尚志市| 澎湖县| 荔浦县| 开阳县| 芮城县| 肇州县| 河池市| 朝阳区| 克什克腾旗| 广平县| 湾仔区| 佛教| 石林| 大姚县| 忻州市| 枣庄市| 南陵县| 车险| 隆子县| 玛曲县| 蒙自县| 平湖市| 瓦房店市| 孝义市| 南投县| 西乌| 星子县| 襄樊市| 曲靖市| 沿河| 彰武县| 杭锦旗|