C語言中,指標的指標的指標,這樣一直下去產生的指標是什麼意義?

時間 2021-05-12 23:03:34

1樓:

你可以超越守恆律憑空得到乙個俄羅斯套娃娃。//抖機靈

若干年前用c寫過乙個用4層指標的複雜資料結構。後來因為維護困難,就轉到了c++,重構後最高端的就是1級指標。

2樓:Bat特白

指標就是位址(記憶體單元編號),位址也要存在記憶體某處。所以指標的指標就是存放位址的位置的位址。

不要看太多的「通俗解釋」,你明白了記憶體是個大陣列,位址就是編號,剩下的就都簡單了。

3樓:

he has a label for the label maker says ''label maker,'' and on that label, there is a tiny label says ''label.''

4樓:

僅僅是宣告乙個好多*的變數,或是讓它指向零位址,或是不停取指標變數的位址來玩,恐怕沒什麼實際意義。

而在實際過程中,將乙個好多*的指標變數初始化為乙個位址,每解引用一次指標變數會取一次這個位址內的內容,繼續解引用一次就會將該內容作為位址再取一次內容。如果套娃沒仔細安排好,基本就segment fault了。

5樓:蕭井陌

記憶體可以理解為乙個銀行保險庫

指標可以理解為一把開啟保險箱的鑰匙

如果保險箱裡面裝的是開啟另乙個保險箱的鑰匙,那就是樓主說的指向指標的指標

6樓:宇佐見蓮子

沒什麼意義,它就是個整數,裡面存的是某一格記憶體的位址而已。而那一格記憶體裡存的是什麼?是另一格記憶體的位址。但這不重要,它對於當前這個指標就是資料。

7樓:布束

你把記憶體當成乙個大酒店,記憶體位址是房間號,【資料】就存在房間裡。

指標就是乙個門牌號,指向某個房間。

二層指標就是你先拿乙個門牌號找到乙個房間,發現房間裡的【資料】是另乙個門牌號。你拿著這個門牌號又去找,找到了另乙個【資料】,這就是這個二重指標指向的【資料】了。

三重指標,四重指標,就是往復迴圈一層層疊加,從資料結構上來看就是乙個類似【鍊錶】的結構。只不過這個【鍊錶】中【節點】的【資料域】都是空的,只有最後乙個節點的【資料域】存著東西。

8樓:wj742421292

我覺得意義源於實際,說個不恰當的例子,想知道某異性資訊,然而你直接問被拒絕(不知道資料位址),所以找朋友,朋友也不知道,但答應你問問他朋友,就這樣一直找下去,不是最多6維,就可以聯絡到任何乙個人嘛,指標的指紋大概也是這道理,不過不會一直指下去

9樓:henry

我在想,如果一直用指標的指標的指標……不停建立指標直到記憶體被占用完畢,然後對所有指標使用取位址運算子那不就知道所有可分配記憶體的分布了麼……

10樓:

List> list=new ArrayList();

如果拿C++實現有幾重指標?

11樓:

你可以認為,記憶體是乙個很大的陣列。

記憶體位址就是這個陣列的索引,

也就是說我們平時用乙個int i來遍歷乙個陣列時,這個i就類似於我們平時所用的指標變數。

所以指標它存的資訊實際上就是乙個索引(當然還有一些其它資訊),指標的指標也一樣,存的資訊歸根到底都只是乙個數,當你用它訪問記憶體中的單元時,就給它了意義。

12樓:brambles

一出現這種問題我就下意識的想找乙個不動點:乙個指向指標自己的指標

無論多少次 & 或者多少次 * 運算都得到這個指標自己 /w\

13樓:w2014

你可以去問問乙個數學系的人,導數指影象的斜率,二階導能間接反應曲率,那九階導數的幾何意義是什麼?

或者去問問物理系的人,一維空間是乙個長度,二維是乙個平面,三維空間是乙個立體構成的,那十一維空間是什麼?

你試試能不能聽懂……

對於抽象的概念,為什麼非要理解它的「意義」。

有把每一處被指向的地方都當做乙個陣列的,最後看成乙個高維陣列。

有把每一處看成乙個鏈的。對,它就是個鍊錶。

看成什麼,它也就是那麼個東西。非要給抽象的東西找乙個「意義」,反而會使得無法認清它的本質。

至於它是什麼,就是乙個變數,值是另乙個變數的位址,而那個變數的值,又是再下乙個變數的位址……

簡略一點,它就是多級指標。定義是指標的迭代。不需要任何其它定義。

14樓:

乙個只能在末端裝資料的鍊錶。

如果是為了控制位址,多層指標實際意義基本沒有(或許是我沒見過吧,我實在不知道什麼問題需要這麼多層的抽象來解決)

15樓:菜夢

int __getmainargs(

int * _Argc,

char *** _Argv,

char *** _Env,

int _DoWildCard,

_startupinfo * _StartInfo);

舉了例子:微軟執行時庫里的這個函式體現了 *** 的典型應用。

16樓:forever

1級指標是C語言的靈魂,到處用,人人用。

2級指標其實使用場景也比較多,前面有人提到了呼叫某個函式,讓這個函式幫你申請記憶體,這時,傳入函式的引數是個二級指標,為何要2級,自己寫個能夠實現上述功能的函式就全明白了。2級指標還有個用法就是2維陣列,舉個最常見的例子,就是C語言main函式的 argv引數。

3級指標,貌似nginx原始碼中用到了,沒有深入了解nginx原始碼,比較同意上面的回答,誰特麼日常程式設計用3級指標,打死他!團隊合作我覺得語句盡量寫的白話一些,多加注釋。

17樓:fyw

指標這個東西不管你給他加多少定語,都只是乙個字長的變數,資料內容是乙個位址值而已。

所有定語實際上都是加在被指向的單元,不是指標變數本身。

想清楚了這個,這種問題迎刃而解

18樓:阮晶雷

其實一般最多2到3級, 沒看過更多級的。 c 是一門很自由的語言,所以沒必要搞一些限制。你喜歡怎麼弄就怎麼弄,喜歡用幾級就幾級。你自己能搞懂就是了。

19樓:

二級指標的通常應用是,由被呼叫函式生產記憶體。就是你把一級指標仍進乙個函式裡,由它為你分配記憶體,和銷毀記憶體。

更高階的指標應用很少,通常二級就極限了。

20樓:

來看一張圖,關於這個問題我這個弱雞是這樣理解的:

我們假設現在有ABCD四個方塊,分別可以存放任意型別的內容。

printf

("%s",*

方塊A);//

將列印出來

Hello

printf("%s", **方塊B);

// 第乙個解引用符得到字串「方塊A」,現在把這個字串看成位址再次解引用不就能取到字元

// 串Hello了嗎

以此類推:

(*(*(*(*方塊D // 方塊C) // 方塊B) // 方塊A) // Hello)

21樓:

沒有意義,這僅僅是乙個技術實現的副產品。

指標的意義就是他指向的物件,指標的指標的指標,只是乙個需要處理的技術細節。

產生指標的指標的指標是為了統一引用引數的行為。

22樓:肖劍

Linus Torvalds 在一次TED的採訪中舉了個例子,如何用指向指標的指標寫出優雅的程式。

The mind behind Linux

23樓:左江

因為語法裡面宣告指標的語法是遞迴的

所以可以不停的產生指標

至於為什麼這個語法要遞迴嘛

大概是這樣描述比較方便

否則一層指標說一大坨

二層指標又得扯一大堆太瑣碎

24樓:許豆

提公升逼格

其實沒啥意義,好比我有一塊錢,放在保險櫃裡邊,保險櫃鑰匙放在乙個小信封裡邊,小信封放在一本書裡邊,書放在書櫃裡,....

結果是,我要找那一塊錢,想想還是算了,不要了!

C語言中指標的型別在彙編中是如何表示的?

組合語言。組合語言一般確實沒有指標或位址這樣的資料型別,但是基本都會有一些基本的資料型別來容納指標或位址的值。具體到80x86彙編,就可以通過偽指令按位元組 字 雙字 四字甚至來定義資料項,這些資料項就可以用來容納指標或位址的值。不過,這些指標或位址的值在匯程式設計序中往往無法直接使用,需要將這些值...

C 語言指標的指標和二維陣列的區別

已登出 C系的二維陣列是按行儲存的普通陣列,而不是在託管 指令碼語言中更普遍的引用陣列,二維陣列是乙個 以行為單元的陣列 而不是 以對陣列的引用為單元的陣列 也就是說,T x y 是 Array 當然C系不會這麼寫 而不是Array。所以typeof T x y 也就是說typeof a 是T y ...

c語言函式是如何獲取傳入的陣列(指標)的指標所指向內容的長度的,有辦法嗎?

陳昱 如果是new出來的話,有可能找到,想想delete array時,系統是如何知道需要delete的長度的呢?一種說法是array指標的位址前面的位址,有儲存該陣列大小的資訊,於是可以獲取到了,具體不確定 c語言的情況下,老老實實的把長度帶上。就好比你給搬家公司的人說我要搬家,然後人家說我派一輛...