方法參數(shù)中的指針

? ? ? ?我是一名編程自學(xué)者。只學(xué)了java由于沒有C語言指針基礎(chǔ),所以學(xué)大話數(shù)據(jù)結(jié)構(gòu)很是費(fèi)勁。今天我把自己遇到的疑惑解答出來,希望后來者可以少爬一些坑,也當(dāng)做是我個(gè)人的學(xué)習(xí)筆記。

進(jìn)入正題

今天解答鏈表操作方法參數(shù)中什么時(shí)候帶*號,什么時(shí)候不帶*比如Status GetElement(LinkList L,int i,ElemeType *e) L之前沒有*。

Status LinkInsert(LinkList *L,int i,ElemType e) L之前帶了*

首先線性表單鏈表的存儲(chǔ)結(jié)構(gòu)如下:

typedef struct Node//這是定義結(jié)構(gòu)體變量的格式

{

ElemType data;

struct Node *next;

}Node;

typedef struct Node ?*LinkList;//此處理解是關(guān)鍵

其實(shí)上面這句代碼應(yīng)該這樣寫會(huì)更合理如下:

typedef struct Node* ?LinkList;

什么意思呢?

指針變量的類型是Node*? ? ,通過

typedef struct Node*? LinkList;

LinkList可以代表Node*或者說兩者是同一個(gè)類型

接下來用LinkList聲明一個(gè)變量如下

LinkList ? L;(相當(dāng)于*Node ?L)

此處L就是一個(gè)指針的變量名,此指針指向誰呢?

指向Node。

那如果我這樣寫呢如下

LinkList ? *L;

這是什么意思呢?和上面一樣嗎?當(dāng)然不一樣

上述代碼相當(dāng)于LinkList* ? L;

L是一個(gè)指針不假,但此指針指向的是LinkList(是*Node不是Node),

LinkList本身就是一個(gè)指向Node節(jié)點(diǎn)的指針類型

也就是說L是一個(gè)指向指針(指向Node節(jié)點(diǎn))的指針

那什么時(shí)候在方法參數(shù)里用LinkList什么時(shí)候用LinkList*呢?

這就涉及到值傳遞了比如有如下代碼:

main(){

Node ?i;

LinkList a;

a=&i;//a指向i

LinkList* b;

b=&a;

void methodOne(LinkList L)//對method方法進(jìn)行聲明

methodOne(a);//對methodOne方法進(jìn)行調(diào)用

調(diào)用methodOne是把a(bǔ)的值傳遞給L

a的值就是i的地址

如圖

執(zhí)行methodOne方法體內(nèi)具體代碼前


此時(shí)L的地址也是i的地址

執(zhí)行methodOne方法體內(nèi)具體代碼后


此時(shí)L的地址是j的地址,a的地址還是i的地址

也就是說調(diào)用methodOne之后并沒有對a有所改變

或者說操作不了a,操作的只是L,而L在調(diào)用完methodOne方法后就沒用了,沒人管它。

void methodTwo(LinkList *L);

接下來調(diào)用methodTwo

methodTwo(b);

執(zhí)行methodTwo方法體內(nèi)具體代碼前


執(zhí)行methodTwo方法體內(nèi)具體代碼后



}

此時(shí)實(shí)現(xiàn)了對a的實(shí)際操作,因?yàn)閙ethodTwo方法中P=*L,P拿到的就是a,所以對a實(shí)現(xiàn)了具體的操作。

void methodOne(LinkList L){

.......具體方法對L 進(jìn)行操作

比如

Node j;

L=&j;

}

void methodTwo(LinkList *L){

Node j;

LinkList p;

p=*L;

p=&j;

}

綜上你就應(yīng)該知道鏈表操作方法參數(shù)中什么時(shí)候帶*號,什么時(shí)候不帶*了吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,906評論 0 33
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,042評論 0 9
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,612評論 3 44
  • 本文來自本人著作《趣學(xué)數(shù)據(jù)結(jié)構(gòu)》 鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)方式,邏輯上相鄰的數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)位置不一定相鄰,那么...
    rainchxy閱讀 3,885評論 6 20
  • 昨天本該在家休息的張老師不知不覺來到了教室,自習(xí)室里兩個(gè)孩子在安靜的寫作業(yè),只見其中一個(gè)孩子時(shí)而撓頭時(shí)而皺眉,似乎...
    新全優(yōu)教育閱讀 333評論 0 0

友情鏈接更多精彩內(nèi)容