關於結構體的typedef,結構體struct前面加 typedef和不加typedef的區別

時間 2022-03-08 15:30:15

1樓:匿名使用者

insert是向這個連結串列中插入資料,也就是說對連結串列進行了修改,所以要用指標傳遞或者引用傳遞.如果不加*使用值傳遞的話,那麼被修改的只是形參,這個形參只是實參的一個值拷貝,函式執行完後,原連結串列實際上並未被修改.

isempty只是判斷連結串列是否為空,沒有對連結串列進行修改,所以值傳遞就可以了.

總之,如果要修改實參,那麼就要用指標傳遞或者引用傳遞.只是對實參進行讀操作的話,用值傳遞就可以了

2樓:

*號修飾的是左面的變數,即listnode*,這代表一個指標.所以總的意思是把指向listnode的指標(listnode*)起了個別名(typedef)叫listnodeptr.

如定義一個指標:

listnode* listnodeinstance;

等同於:

listnodeptr listnodeinstance.注意,這裡的listnodeinstance 是指標型別的.

不可能吧,你是不是看錯了,如果引數是listnodeptr的話,肯定不對的,你把**發我下吧?挺奇怪啊!

3樓:

定義一個指標,以後在結構體中比如需要使用連線next listnode之類的時候跳轉用的吧。

結構體struct前面加 typedef和不加typedef的區別

4樓:匿名使用者

用typedef後, 後面的bai語句的

語義就改du變了,

用typedef定義zhi型別別名

dao,這個別內名和型別一樣使用,

struct s a,b; 定義結構 s和 s的變數a,btypedef struct s a,b; 這裡除了定容義結構s, 又起了別名a和b,

a和b位置的識別符號就都是別名而不是變數

a和b也像型別一樣用來定義結構變數

因為起了別名 所以不起結構名也沒問題 typedef struct a;

一般用typedef同時定義結構型別,和結構指標型別typedef struct _s s,*ps;

s a;

ps p=&a;

5樓:匿名使用者

直接把結構名定義為am_win_menutext然後使用,這樣在使用時必須這樣:

struct am_win_menutext myval定義了別名之版後就可以:權

am_win_menutext myval這樣可以更清晰。

主要在c語言裡這樣使用 使得更方便。

c++就不用typedef 也可以直接使用結構體名。

c++中使用:

struct test

就可以定義一個名為test的結構體,但c中很可能編譯通不過。c語言並不支援在struct後使用標示符定義結構體的名字,test將會被忽略,這相當 於定義了一個沒有名字的結構體。若定義一個該結構體物件test mt 將會提示未定義的test錯誤資訊。

所以,在c語言中,一般使用typedef來定義結構體,上面的例子可以改為:

typedef struct _testtest_test要不要都可以。並且,第一個大括號不能像原來那樣隨便的換行寫(因為是typedef)。

6樓:匿名使用者

typdef就定義別名的,沒什麼區別

typdef sturct

a;和sturct a

;是一樣的

7樓:匿名使用者

typedef 能夠給你一個資料型別設定別名,如內typedef int integer;

#include

void main()

c語言中,關於用typedef 定義結構體的問題

8樓:匿名使用者

typedef struct a //這裡的來a可以自省略!形成一個匿名結構體 a是結構體名b; 因為前面有typedef命令,所以b不是變數,而是一個新的資料型別,相當於struct a

可以用b來定義變數,如:

b aa ;

與struct a aa ; 是一個意思

9樓:敬揚圭景天

實際c/專案中用typedef的作bai

用之一不du是為了少寫幾zhi行**。我用struct表明dao是一個"結構

內",用struct別名表明一個類,例如容student是一個物件很合理,struct

point則當一個"座標結構"看待,但是拋棄這種細節,抽象寫成二維"座標"point2d好像更好,再舉例,如果在c中定義一棧結構,那麼stack或stack看起來比struct

stack好,總之,我覺得這些都不是死的,在**可讀性(或其它的)基礎上,可以依據編碼命名規則規範或程式設計理念、或設計模式來決定"在一種語言上"的語法風格。

10樓:

儘管你已經採納了,但還是要說:那不是一個新的資料型別,只是一個已有型別的別名。概念問題請不要被忽悠。現在可能覺得沒什麼,到後來就會自討苦吃……

11樓:代悅聖代的

寫成下面的是簡單,但是定義一個結構體變數的時候呢就麻煩了。回要寫成struct mystruct ms;這樣定義。

而上面答

的有typedef的則不要,直接寫mystruct ms;這樣即typedef struct tagmystruct mystruct;後,原先定義結構體變數需要

struct tagmystruct ms;

現在只要寫成mystruct ms了。

12樓:匿名使用者

a是結構體名,b是struct a

如何用typedef 定義一個 包括指向該結構體指標的結構體?

13樓:匿名使用者

要有結構體名和別名,一起都要有。

不然定義next會出錯。

一般寫成內

typedef struct lnodelnode;

這裡lnode和struct lnode是兩個不同的名字容,但含義相同。 前者是後者的別名。

求解答c語言結構體定義中typedef的作用

14樓:仁昌居士

c語言結構體定義中typedef的作用是為一種資料結構體定義一個新名字。

在c語言中使用回typedef幫助定義結構體,對

15樓:逍遙足球子

加上typedef意為標籤式定義,在結構體定義之後,在定義型別時直接可以用結構體的名字去內定義物件。而不加上容typedef的話為型別名定義,也就要求之後再定義物件時需要加上 struct mystruct 才可以進行物件定義。

16樓:匿名使用者

定義baitypedef struct tagmystruct後 之後定du義zhi變數可以dao直接用 tagmystruct *p來定內義

但是struct mystruct,之

容後只能用struct mystruct *p來定義

17樓:匿名使用者

c裡面在定義結

bai構體型別的變數du

時要有struct關鍵字,如zhi果按照你下面的寫法dao就必須寫成:

struct mystruct a;

但是使用內typedef則是為結構體型別給容了一個新名字,按原先上面的寫法就直接寫成:

mystruct a;

18樓:匿名使用者

寫成來下面的是簡單,但是定義一個自結構體變數的時候呢就麻煩了。

要寫成struct mystruct ms;這樣定義。

而上面的有typedef的則不要,直接寫mystruct ms;這樣即typedef struct tagmystruct mystruct;後,原先定義結構體變數需要

struct tagmystruct ms;

現在只要寫成mystruct ms了。

19樓:蒼紫幽藍

typedef為c語言的關鍵字,作用是為一種資料型別定義一個新名字。

typedef struct tagmystruct

mystruct;

這種定義之後,之後定義struct tagmystruct結構體變數回時,可以直接使用答mystruct代替struct tagmystruct,例如mystruct a。

注意如果沒有使用typedef,下面這種模式:

struct mystruct

;那麼定義結構體變數必須 struct mystruct a這種方式定義。

所以typedef有簡化變數宣告的作用,還有就是在跨平臺方面有很大作用,定義機器無關型別。

c++標準庫使用的 typedef 來建立平臺無關型別例如size_t,ptrdiff 和 fpos_t 。

typedef定義結構體如何引用

20樓:匿名使用者

對比下面兩種定義:

struct a;

這種定義結構體在使用時應該是:

struct a b,c;

typedef struct a;

這種定義在使用時直接可以省略struct關鍵字,直接就是a b,c;

和int b,c;

類比一下,這時候

a對應型別,相當於int,b和c就是變數識別符號。

typedef顧名思義,就是type define,也就是型別定義。

21樓:匿名使用者

a就表示,是代表結構體型別

struct ;

類似 typedef int int

int與int等同

a b,c;就表示定義了兩個結構體變數b,c

c語言結構體中struct和typedef struct有什麼區別?

22樓:教育仁昌

c語言結構體中struct和typedef struct區別為:宣告不同、訪問不同、重新定義不同。

一、宣告不同

1、struct:struct可以直接使用結構體名字宣告結構體。

2、typedef struct:typedef struct的為。修飾結構體,結構體有了別名,通過結構體別名宣告結構體。

二、訪問不同

1、struct:struct定義的結構體變數,可直接訪問結構體成員。

2、typedef struct:typedef struct定義的結構體變數,不可直接訪問結構體成員,必須顯式的通過結構體變數來訪問成員。

三、重新定義不同

1、struct:想重新定義struct結構體的話,必須重寫整個結構體。

2、typedef struct:想重新定義typedef struct結構體的話,可以通過別名來繼承結構體進行重新定義。

23樓:妖刀

struct是結構體的關鍵字,用來宣告結構體變數如 struct student ; typedef是用來定義新的型別名來代替已有的型別名, 可將上面的結構體定義為 typedef struct student stud; 也就是說,將原來的struct student 重新定義為 stud; 舉個例子 如上面的方法定義了結構體student時,如果在主函式中宣告結構體變數時,應按如下方法 struct student stu[10];這樣就宣告瞭一個結構體陣列, 如果開始定義時用typedef,那麼就可以直接用 stud stu[10]來宣告, 這就他們的區別

24樓:汲玉羽菲

typedef可以定義一個新型別

以後定義struct變數就不用再加struct了

c語言結構體加型別定義typedef struct不懂,誰來幫幫我

25樓:戀戀土豆絲

typedef 是用來給已有的資料型別重新再起個名字。使用方法:

typedef 已有的型別名 新名字;

如 typedef int int; //給已有的型別int 再起個名字 int

在下面的語句中;即可以用int定義整形變數,也可以用int定義整形變數

int a; //定義整形變數a

int a;//也可以用新名字來定義整形變數a

typedef結構體指標變數再去定義變數什麼意思

driverextension是一個你自己命名的結構體的名字 看起來是驅動拓展?結構體裡的結構是自己定義的,不過這個結構體貌似是引用了另一個結構體。你說的pdriver extension driverextension就是這樣定義結構體的,沒有問題 typedef是自定義型別,相當於,用pdriv...

關於結構體指標問題,還有函式指標作為結構體成員的問題

雪豹出擊 int changevar int 你少些了個e這是一個函式指標,這個changevar指標指向一個這樣的函式 這個函式有一個int型引數,返回值也是int.所以if fb info.changevar 的意思就是判斷結構體fb info中的changevar是否為空,等同於if fb i...

結構體指標的問題,結構體指標和結構體中的指標的區別

楚劒蘭心 是呼叫操作符,是對指標的解引用然後再呼叫,只有指標呼叫別的變數或函式時使用,並且只要是用指標來呼叫的話,就必用它。比如 struct s int value s p 定義一個結構體指標 p value 呼叫結構體內的變數。也就是 p value 二者等價。 公珍碧魯哲 struct l 粗...