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 ...