C语言中结构体变量名代表什么

比如structstudent{.....}A;那么单独一个A表示什么,是代表结构体A的首地址么,还是表示一整个A包含的一段内存的内容。... 比如
struct student
{
.....
}A;

那么单独一个A表示什么,是代表结构体A的首地址么 ,还是表示一整个A包含的一段内存的内容。
展开
 我来答
nlwbzd
推荐于2017-11-25 · TA获得超过768个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:77.3万
展开全部
A就是个变量名嘛,就跟你定义了一个int x一样。
它的首地址要用&A取出来。

不要把它跟数组搞混了,一个数组,比如int b[10],
这里的b实际是一个指向数组首地址的指针,即:b = &b[0]
追问
那为什么这个可以运行。。。(真的可以运行。。。)
struct student *head,*p; (前面已定义struct)
head=&p; 一个地址怎么赋值到结构体变量上??
追答
head的类型是struct student*,就是说,head是一个指针,
具体一点说,它是一个指向struct student类型对象的指针,
p同理,也是一个指针。p这个指针变量也是一个变量,它在内存中也有自己的地址,
&p就是把p这个指针的地址拿出来,然后再赋给head.

当然,这个赋值是不合理的,因为head本来的合理的值应该是某个struct student的地址,
现在你却要把一个指针(准确一点,是struct student *)的地址赋给它。

不过,虽然不合理,赋值确实相容的。举个例子,赋值相容就是说,你也可以把一个double类型的值赋给一个int,当然这中间可能会造成精度损失,比如1.1赋过去以后就变成了1,赋值时发生了隐式的类型转化(double转成了int)。

说了那么一大段,意思就是,从语法的角度讲,head = &p并没有错。赋值时,实际上发生了隐式类型转化,把&p的类型(p是struct student*, &p就是struct student **)转化成了head自己的类型(struct student*)。

这个赋值仅仅是语法上可行,但千万不要这么用!程序运行起来很危险!!

说过你还不明白,我再说通俗一点:
有这么一个句子:男人是女人。
从语法的角度讲,它是对的,有主语有谓语有宾语,句子很完整。
但是他的语义显然不合理。

明白了吗?
White_MouseYBZ
2012-12-01 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6661万
展开全部
A是表示student结构体的所有内部内容的结构体变量。struct student{.....};只是一个“空架子”——样板。只有A才是和这个样板一模一样的“实体”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
借风而行
2012-12-01 · 超过17用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:49.1万
展开全部
struct 结构体名
{
成员表列
}变量名表列;
A是一个结构体变量,在小程序中适用,一般大程序在使用的地方定义变量

参考资料: C语言设计教程 谭浩强 著

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在学府园滑雪的彗星
2012-12-01 · TA获得超过234个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:145万
展开全部
这句话相当于
struct student
{
.....
};
int main()

struct student A;
。。。。
追问
。。。我是问把A单独拿出来表示什么。。。不是说在那段话里表示什么。。。
追答
额,不表示什么啊,如果不再这段话里,只是一个普通的字符~没有特殊的意义,和BCDEFGHI...一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjfaok
2012-12-01 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1621万
展开全部
可以理解成“一整个A包含的一段内存的内容”吧……
更多追问追答
追问
那如果是内容的话 为什么下面这段代码里的return里可以直接用head?
struct student*creat(void)
{
struct student *head,*p1,*p2;
p1=p2=(struct student*)malloc(LEN);
head。。。。
。。。
p2->next=NULL;
return(head);
}
追答
这里的head是指针啊……指针存储的当然是地址啊……但是前面的A不是指针,所以不是存储地址啊……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式