[问题] 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