c語言二重指針有什麼用,c語言兩個指針賦值

本文目錄一覽:

C語言中建立動態鏈表要用雙重指針嗎?那個雙重指針有什麼作用?

舉個例吧,

假如一個結構:LinkNode

初始化:Initial(LinkNode **p);//這裡就是雙指針

那麼在調用就這樣,

LinkNode *p;

Initial(p);

原理就是,如果你要通過函數來改變某個參數的值,那麼就要傳該參數的地址進去。

這裡p是一個指針,所以要傳指針的地址進去,也就是一個指向指針的指針;

初始化函數Initial(LinkNode *(*p));(*p)是指針,*(*p)就是傳指針的地址進去了,意思就這樣,不知道你聽不聽得懂。

不管動態還是靜態,只要是要通過函數來改變指針類型數據的值,就要用雙重指針。

C語言高手進關於雙重指針 多重指針的問題

1、多重指針常用於多維數組或者多維字符串的操作,有時也用於函數參數傳遞;

2、指針是C語言的一個重要知識點,你可以簡單理解為地址。多重指針需要通過多次尋址才能找到實際的值。這裡一個示例:

# includestdio.h

int main()

{

unsigned int x=0x1234;

unsigned int *p1=NULL;

unsigned int **p2=NULL;

unsigned int ***p3=NULL;

p1=x;

p2=p1;

p3=p2;

printf(“\n x=0X%X, x=:0X%X”,x,x);

printf(“\n *p1=0X%X, p1=:0X%X, p1=:0X%X”,*p1,p1,p1);

printf(“\n **p2=0X%X, *p2=:0X%X, p2=:0X%X, p2=0X%X”,**p2,*p2,p2,p2);

printf(“\n***p3=0X%X, **p3=:0X%X, *p3=:0X%X, p3=:0X%X, p3=:0X%X”,***p3,**p3,*p3,p3,p3);

return 0 ;

}

顯示結果:

x=0X1234, x=:0X6C56C298

*p1=0X1234, p1=:0X6C56C298, p1=:0X6C56C290

**p2=0X1234, *p2=:0X6C56C298, p2=:0X6C56C290, p2=0X6C56C288

***p3=0X1234, **p3=:0X6C56C298, *p3=:0X6C56C290, p3=:0X6C56C288, p3=:0X6C56C280

所有類型變量都可以通過獲得該變量在內存中的地址,從以上示例看出

變量x在內存中的地址為:0X6C56C298

指針變量p1的地址為:0X6C56C290

指針變量p2的地址為:0X6C56C288

指針變量p3的地址為:0X6C56C280

以上變量按照定義先後順序在內存中從高地址到低地址連續存儲的,每個變量佔據8個位元組空間。

其中p3的值(也就是0X6C56C280這個地址的內存中存放的數據)為p2的地址。

p2的值(也就是0X6C56C288這個地址的內存中存放的數據)為p1的地址。

p1的值(也就是0X6C56C290這個地址的內存中存放的數據)為x的地址。

要取得最終的0x1234這個數據,幾重指針前面就有幾個*,比如***p3就表示0x1234這個具體的值。只要少一個*,那麼獲得的就是地址。

C語言的單鏈表在開創內存空間時為什麼要用到雙重指針?

你的意思是這樣嗎

List *L;

insert(L);//初始化insert(List **L)

你問的是 初始化中 為什麼要雙重指針嗎?

如果是的話,那麼意思是,你想通過函數來改變L的值,但是L是指針類型,所以你要改變它的值就要傳L的地址進去,因為雙重指針的意思就是指向指針的指針,就是指針的地址,那麼**L就是指向指針L的地址,那麼通過函數調用雙重指針就能改變指針L的值。

道理就是:要傳遞變量的地址才能使變量的值發生變化.現在的變量是指針型,所以要傳指針類型的地址,也就是雙重指針。

不知道我理解對了沒

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/250793.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-13 13:30
下一篇 2024-12-13 13:30

相關推薦

  • 為什麼用cmd運行Java時需要在文件內打開cmd為中心

    在Java開發中,我們經常會使用cmd在命令行窗口運行程序。然而,有時候我們會發現,在運行Java程序時,需要在文件內打開cmd為中心,這讓很多開發者感到疑惑,那麼,為什麼會出現這…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • 指針Python:為什麼Python中不需要使用指針?

    在Python中,指針的使用不像其他語言一樣那麼常見。這是因為Python有自己的內存管理方式,所以在大多數情況下,不需要顯式地使用指針。那麼,為什麼Python中不需要使用指針呢…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python文件路徑賦值

    Python中文件操作是非常基本的操作,而文件路徑是文件操作的前提。本文將從多個方面闡述如何在Python中賦值文件路徑。 一、絕對路徑和相對路徑 在Python中,路徑可以分為絕…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論