全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:871
推到 Plurk!
推到 Facebook!

指標型態的問題

 
erasy
一般會員


發表:13
回覆:16
積分:5
註冊:2004-07-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-28 17:40:54 IP:59.114.xxx.xxx 未訂閱
請問一下,紅色的宣告是什麼意思,因為拿掉的話complier不會過?    typedef int datatype; typedef struct node {     datatype data;     struct node *next; }linklist;    linklist *CREATLISTR()  //尾插法建立串列  {     char ch;     linklist *head, *s, *r;     head=NULL;     r=NULL;     ch=getchar();     while(ch != '$')     {         s =(linklist *)malloc(sizeof(linklist)); s->data = ch; if(head == NULL) head=s; else r->next = s; r = s; ch = getchar(); } if(r != NULL) r->next = NULL; return head; } main() { system("PAUSE"); return 0; }
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-28 20:09:55 IP:61.64.xxx.xxx 未訂閱
引言: 請問一下,紅色的宣告是什麼意思,因為拿掉的話complier不會過? typedef int datatype; typedef struct node { datatype data; struct node *next; }linklist; linklist *CREATLISTR() //尾插法建立串列 { char ch; linklist *head, *s, *r; head=NULL; r=NULL; ch=getchar(); while(ch != '$') { s =(linklist *)malloc(sizeof(linklist)); s->data = ch; if(head == NULL) head=s; else r->next = s; r = s; ch = getchar(); } if(r != NULL) r->next = NULL; return head; } main() { system("PAUSE"); return 0; }
因為malloc()的回傳值為void*, 但您接收回傳值的參數為一個linklist*, 型態不同, 故compiler會要求強制轉型.
erasy
一般會員


發表:13
回覆:16
積分:5
註冊:2004-07-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-28 21:37:06 IP:59.114.xxx.xxx 未訂閱
引言:
引言: 請問一下,紅色的宣告是什麼意思,因為拿掉的話complier不會過? typedef int datatype; typedef struct node { datatype data; struct node *next; }linklist; linklist *CREATLISTR() //尾插法建立串列 { char ch; linklist *head, *s, *r; head=NULL; r=NULL; ch=getchar(); while(ch != '$') { s =(linklist *)malloc(sizeof(linklist)); s->data = ch; if(head == NULL) head=s; else r->next = s; r = s; ch = getchar(); } if(r != NULL) r->next = NULL; return head; } main() { system("PAUSE"); return 0; }
因為malloc()的回傳值為void*, 但您接收回傳值的參數為一個linklist*, 型態不同, 故compiler會要求強制轉型.
請問Zard: 您的意思是說假如要接收malloc()傳回值,則左邊的參數型式,也要宣告在右式內嗎?
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-28 21:43:37 IP:61.64.xxx.xxx 未訂閱
引言: 請問Zard: 您的意思是說假如要接收malloc()傳回值,則左邊的參數型式,也要宣告在右式內嗎?
是的, 就是把void*轉型為linklist*的意思
系統時間:2024-11-24 22:40:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!