指標型態的問題 |
|
erasy
一般會員 ![]() ![]() 發表:13 回覆:16 積分:5 註冊:2004-07-20 發送簡訊給我 |
請問一下,紅色的宣告是什麼意思,因為拿掉的話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 發送簡訊給我 |
引言: 請問一下,紅色的宣告是什麼意思,因為拿掉的話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 發送簡訊給我 |
引言:請問Zard: 您的意思是說假如要接收malloc()傳回值,則左邊的參數型式,也要宣告在右式內嗎?引言: 請問一下,紅色的宣告是什麼意思,因為拿掉的話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
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |