[問題] C結構新手疑問

看板C_and_CPP作者 (願翱翔)時間9年前 (2015/01/03 14:56), 9年前編輯推噓6(606)
留言12則, 7人參與, 最新討論串1/1
小弟新手問了白痴問題見諒,剛剛做了結構的練習題,實在不明白為什麼其他結構內宣告 的變數就不用宣告指標,name這變數沒加指標的話會當掉...求解謝大大! #include<stdio.h> #include<stdlib.h> void pass(struct no1 *); void ans(struct no1 *); struct no1 { char *name; //這裡為什麼要宣告成指標的變數? int num; int pass; }; void main() { struct no1 s = { "Louis", 80 }; pass(&s); ans(&s); system("PAUSE"); return 0; } void pass(struct no1 *s) { if (s->num >= 60) { s->pass = 1; } else { s->pass = 0; } } void ans(struct no1 *s) { printf("學生姓名:%s\n考試分數:%d\n檢驗結果:%s\n\n",s->name,s->num, (s->pass == 1) ? "通過":"失格"); } -- 願翱翔於天空之際 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.172.142.94 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1420268168.A.208.html

01/03 15:15, , 1F
因為 "..." 的型態就是 const char *
01/03 15:15, 1F

01/03 15:57, , 2F
謝謝 還是不太懂
01/03 15:57, 2F
※ 編輯: LouisFFs (1.172.142.94), 01/03/2015 15:58:22

01/03 16:23, , 3F
(char *)是沒有長度的字元陣列 所以被當成字串使用
01/03 16:23, 3F

01/03 16:24, , 4F
不管是不是在struct裡面 字串就是要*
01/03 16:24, 4F

01/03 17:08, , 5F
謝謝!!已了解
01/03 17:08, 5F

01/03 19:57, , 6F
新手路過長知識給推
01/03 19:57, 6F

01/03 20:50, , 7F
+1
01/03 20:50, 7F

01/03 21:11, , 8F
char只能代表1個字元,char*可以指向連續字元的第1個的位置
01/03 21:11, 8F

01/04 02:57, , 9F
寫成 char name[20] 就可以了,建議原po翻一下書 :D
01/04 02:57, 9F

01/04 02:58, , 10F
上述寫法中,20可以隨你需求改變,這是一個寫死的方式
01/04 02:58, 10F

01/04 03:00, , 11F
如果我有說錯,再請大家指正 :D,謝謝大家
01/04 03:00, 11F

01/04 09:27, , 12F
謝謝囉~之後會再研究動態
01/04 09:27, 12F
文章代碼(AID): #1KfvA888 (C_and_CPP)