[問題] C結構新手疑問

作者: LouisFFs (願翱翔)   2015-01-03 14:56:00
小弟新手問了白痴問題見諒,剛剛做了結構的練習題,實在不明白為什麼其他結構內宣告
的變數就不用宣告指標,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) ? "通過":"失格");
}
作者: bibo9901 (function(){})()   2015-01-03 15:15:00
因為 "..." 的型態就是 const char *
作者: LouisFFs (願翱翔)   2015-01-03 15:57:00
謝謝 還是不太懂
作者: OPIV (Monitor)   2015-01-03 16:23:00
(char *)是沒有長度的字元陣列 所以被當成字串使用不管是不是在struct裡面 字串就是要*
作者: LouisFFs (願翱翔)   2015-01-03 17:08:00
謝謝!!已了解
作者: wilson85771 (HOW)   2015-01-03 19:57:00
新手路過長知識給推
作者: s1000 (s1000)   2015-01-03 20:50:00
+1
作者: kwpn (ITSST)   2015-01-03 21:11:00
char只能代表1個字元,char*可以指向連續字元的第1個的位置
作者: mine1988 (三民)   2015-01-04 02:57:00
寫成 char name[20] 就可以了,建議原po翻一下書 :D上述寫法中,20可以隨你需求改變,這是一個寫死的方式如果我有說錯,再請大家指正 :D,謝謝大家
作者: LouisFFs (願翱翔)   2015-01-04 09:27:00
謝謝囉~之後會再研究動態

Links booklink

Contact Us: admin [ a t ] ucptt.com