在連結串列操作中, 運算子與 運算子有什麼區別?

2025-07-22 20:10:12 字數 4375 閱讀 9571

1樓:網友

對於結構體成員的引用,如果是指標變數,則用->來引用,如struct list * pnode;

pnode->date=m;

這是對的。如果不是指標變數,則要用點來引用,如:

struct list node;

這樣才是對的。

如果用反了,就是錯的了,這個是程式設計規定。

c++ ->運算子有幾種作用?

2樓:網友

->作用:用在指標物件呼叫變數或函式(包括類,結構體)

當然,你自己也可以寫函式,過載這個運算子,那麼這個運算子的作用,就不可窺探了。

我記得我曾經用這個符號用的最多的地方,是構造乙個地圖,然後求最短路徑,這個時候用結構體、連結串列啊,然後指向對應節點。

至於例子嘛,你前面提的乙個問題,就是很好的例子啊。student *a;a->b=1;(b是類student裡面的乙個變數哦)

還是那句話,因為指標許可權過大,所以在高階語言取消了指標的用法,防止直接對記憶體進行操作而出問題,所以只有在做底層系統時,才會用到這個c裡面的這個東西的。

3樓:匿名使用者

1種:指向結構體成員運算子,「.是結構體成員運算子。

4樓:網友

一種作用吧,表示指標引用屬性。

5樓:網友

指標符合,當然也可以過載。

連結串列中linklist l與linklist *l的區別以及(*l).elem,l.elem l->next,(*l)->next的區別

6樓:哈哈樂

typedef struct nodenode,*linklist;

對於linklist l: l是指向定義的node結構體的指標,可以用->運算子來訪問結構體成員,即l->elem,而(*l)就是個node型的結構體了,可以用點運算子訪問該結構體成員,即(*l).elem;

對於linklist *l:l是指向定義的node結構體指標的指標,所以(*l)是指向node結構體的指標,可以用->運算子來訪問結構體成員,即(*l)->elem,當然,(*l)就是node型結構體了,所以可以用點運算子來訪問結構體成員,即(**l).elem;

在連結串列操作中,我們常常要用連結串列變數作物函式的引數,這時,用linklist l還是linklist *l就很值得考慮深究了,乙個用不好,函式就會出現邏輯錯誤,其準則是:

如果函式會改變指標l的值,而你希望函式結束呼叫後儲存l的值,那你就要用linklist *l,這樣,向函式傳遞的就是指標的位址,結束呼叫後,自然就可以去改變指標的值;

而如果函式只會修改指標所指向的內容,而不會更改指標的值,那麼用linklist l就行了;

下面說個具體例項吧!

#include

#include

typedef int elemtype;

typedef struct nodenode, *linklist;

初始化連結串列,函式呼叫完畢後,l會指向乙個空的連結串列,即會改變指標的值,所以要用*l

void initlist(linklist *l)

清空連結串列l,使l重新變為空連結串列,函式呼叫完後不會改變指標l的值,只會改變指標l所指向的內容(即l->next的值)

void clearlist(linklist l)

銷燬連結串列l,釋放連結串列l申請的記憶體,使l的值重新變為null,所以會改變l的值,得用*l

void destroyllist(linklist *l)

free(*l);

l = null;

int main()

7樓:網友

linklist l 定義了乙個linklist的物件,叫llinklist *l定義了乙個可以指向linklist物件的指標,叫l

l).elem 指標l指向的物件的成員變數elem,與l->next等價。

物件l的成員變數elem

l->next 指標l指向的物件的成員變數next(*l)->next 指標l指向的物件指向的物件的成員變數next

8樓:網友

前面表示linklist型別的乙個例項,後面表示乙個該型別的指標。

在c++中,怎麼理解「->」是乙個單目運算子,它的運算元時什麼,返回值又是什麼?

9樓:匿名使用者

沒有人解釋怎麼理解「->是乙個單目運算子?那我來說說我的理解。

的左邊是變數,而右邊只能是成員,由於不指定所屬物件的成員本身不能作為函式引數,所以->的運算子過載函式只能被看作接受乙個運算元,其返回的是乙個指標(也就是說a->b的時候如果a不是指標,則解釋為c->b,其中c是對a呼叫運算子函式->所返回的指標)

10樓:金色潛鳥

-> 是指標運算子之一,它叫 從 被指向的結構成員 查詢結構物件指標 的運算。

英文:structure dereference ("member b of object pointed to by a"), a->b

運算元 是結構成員b, 返回值是 結構物件指標a。句法:a->b

11樓:匿名使用者

->的左邊是變數,而右邊只能是成員,由於不指定所屬物件的成員本身不能作為函式引數,所以->的運算子過載函式只能被看作接受乙個運算元,其返回的是乙個指標(也就是說a->b的時候如果a不是指標,則解釋為c->b,其中c是對a呼叫運算子函式->所返回的指標)

12樓:匿名使用者

呼叫的語法形式:

指向某物件的指標》"->"《該物件當中的成員》

呼叫的語義:

通過指向某物件的指標來呼叫該物件當中的成員該成員可以是方法(函式),或者某變數。

當所指向的物件為派生類時,所呼叫的成員也可能是其基類的成員若所呼叫的成員為虛擬函式,很有可能呼叫的是其派生類中的函式總之,情況不同返回值型別不同。

13樓:匿名使用者

應用於指標物件對物件中的公有變數和方法函式呼叫,屬於操作符過載呼叫。

14樓:匿名使用者

當定義的類是指標型別的,就用->,如果是其他型別就用。

15樓:匿名使用者

...是個結構指標運算子吧。

16樓:

->是個什麼,都沒關係,wo->xinge=haoren 理解這個就行了^^

在c語言中,要求運算子必須是整數的符號是什麼?

17樓:倒黴熊

% 取模運算子。

也就是7除以2的餘數。

18樓:天雲一號

首先糾正bai

問題的描述,應du該是在c語言中。

zhi,要求運算元必須是整數dao的運算子是版什麼?權在c語言中運算子%要求左右運算元必須是整數。

由於運算子%的功能是求餘,所以對於小數來說,就沒有什麼意義,因此左右運算元就必須為整數。如:

通常運算子%用在判斷奇偶性和迴圈連結串列與迴圈佇列中確定節點位置等。

連結串列中的怎麼使用指標進行連結串列的建立、插入、刪除等處理操作

19樓:網友

1、連結串列建立需要節點。這是儲存資料的基礎,以c++語言為例,要建立這樣的節點(假設儲存資訊的型別作為乙個模板)

template

struct node;

2、因為你是使用指標,那麼,就需要動態建立結構體。使用new 運算子在堆記憶體中建立。

node*head = new node;

堆記憶體和棧不同,你動態申請和釋放都是在堆記憶體裡,所以你不用擔心呼叫乙個函式,在。

這個函式里動態申請了記憶體,返回之後沒有了,在的。

3、插入節點。

我們以插入頭結點後邊為例:

假設函式原型為:

void addtofirst( node* head, datatype data );

那麼函式主體中這樣寫:

這樣,新增到頭結點之後的動作就完成了。

4、刪除操作。

刪除操作需要查詢是否存在要刪除的資料,存在則刪除,不存在不採取動作。

函式原型:void deletenode ( node*head, datatype data );

我們設定ptr作為遍歷連結串列的遊標,設定ptrnext指標作為ptr的下乙個節點,將它裡面的info與data對比;

設定兩個指標是為了方便我們刪除節點。

函式定義如下。

if( !ptrnext ) 如果ptrnext ==null

cout 《連結串列中不存在此資料:" data 《關於連結串列的建立、新增節點、刪除節點,還需要你自己多多琢磨。

運算子與賦值運算子區別,賦值運算子與關係運算子區別

大於 或等於 是判斷運算子,判斷數值大小用的.和 小於 大於 小於或等於 等於 的用法一樣.一般在回if或while等判斷語句裡面答用 是賦值運算子,給物件賦值的時候用.區別於 例如 a和b都是兩個int物件.if a b 如果a大於或等於b,將a的值賦值給b.的意思是等於且大於呀。是兩個符號 沒研...

c成員運算子和域運算子的區別,C 中 運算子和 運算子有什麼區別

一般成員運算子bai用於選擇結構體du裡zhi面的成員,如struct xx xx.a 3 xx.b 5 域運算dao符一般用來選專用全域性的函式,如在cwnd類裡要使屬用api的setwindowpos 就要用域運算子 setwindowpos c 作用來域運算子 是和類相源關的一般 用語把函式的...

c語言運算子,C語言 運算子 是怎麼運算的

9除以5商1餘4 不是說小數最後位是餘數 餘數就是在整數的除法中,只有能整除與不能整除兩種情況。當不能整除時,就產生餘數,所以餘數問題在小學數學中非常重要。餘數有如下一些重要性質 a,b,c均為自然數 1 餘數小於除數。2 被除數 除數 商 餘數 除數 被除數 餘數 商 商 被除數 餘數 除數。3 ...