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

比如
struct student
{
.....
}A;

那么单独一个A表示什么,是代表结构体A的首地址么 ,还是表示一整个A包含的一段内存的内容。

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*)。

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

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

明白了吗?

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-01
A是表示student结构体的所有内部内容的结构体变量。struct student{.....};只是一个“空架子”——样板。只有A才是和这个样板一模一样的“实体”。
第2个回答  2012-12-01
struct 结构体名
{
成员表列
}变量名表列;
A是一个结构体变量,在小程序中适用,一般大程序在使用的地方定义变量

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

第3个回答  2012-12-01
这句话相当于
struct student
{
.....
};
int main()

struct student A;
。。。。追问

。。。我是问把A单独拿出来表示什么。。。不是说在那段话里表示什么。。。

追答

额,不表示什么啊,如果不再这段话里,只是一个普通的字符~没有特殊的意义,和BCDEFGHI...一样

第4个回答  2012-12-01
可以理解成“一整个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不是指针,所以不是存储地址啊……

追问

哦哦

C语言,C++,结构体变量名代表什么,数组名代表数组元素地址,相当于一个指...
结构体名相当于类名,作用也与类名相近似。也可以将结构体名类比为自定义类型名,等同于int,double,float等,通过结构体名定义变量。

C语言结构指针和结构变量名分别是什么意思
结构体指针就是指向一个结构体的指针,就跟变量指针一个意思,变量名就是给某个结构体类型定义的一个名字。比如Int a;a就好比一个结构变量名;int *p;p=a;p就好比结构体指针。如果还不懂的话,你可以先看看书上的结构体那章,仔细看,很简单的 ...

C语言中结构体类型名与变量名区别?
结构体名字是类型名,变量名是实体名,一个类型可以有许多实体。具体操作,举例讲解如下:1.结构体类型定义 定义方式1:Typedef struct LNode { int data;\/\/ 数据域 struct LNode next;\/\/ 指针域 } LinkList;定义方式2:struct LNode { int data;\/\/ 数据域 struct LNode next;\/\/ 指针域 };...

请问C语言中结构名和结构变量是什么?
结构可以看成是特殊的数组。结构名等同数组名。结构变量等同 数组名。-- 通俗易懂吧!数组 含一组数,它们是同一类型的。整型数组,它的所有元素都是整型。float 数组,它的所有元素都是float型.结构 含一组数,它们往往 是 不同类型的。 例如,它的成员 有整型,有float型,有 char 型。有没有...

C语言定义结构体时,为什么只有name前有*,其他变量前没有?
定义结构体变量其实就跟定义普通的变量相似,比如你在定义指针变量的时候,会有这样的定义:int *p;同样在定义结构体变量的时候也有这样的定义。就拿你说的这个而言,name 表示的就是一个指针型的结构体变量。它里面存的是一个地址,这个地址就是它所指向的那个结构体的首地址。总的来说*一般情况下...

c语言中,结构体类型名和变量名之间有什么区别?如何区分?
结构体名字是类名,变量名是实体名,一个类可以有许多实体。好比说笼统说“铅笔”是一个类,那么文具盒里面具体的每一支铅笔都是一个实体。结构体的成员只起到规划的作用,变量才是具体实施的。能理解否???

C语言结构体名代表什么?是地址吗?
结构体的定义是一种类型的定义,就像int、float一样来定义变量,通过这种类型定义出的变量可以当做是地址。当做实参时可以通过&来取地址,形参指针接收。 子诺嫣然 | 发布于2012-05-25 举报| 评论 7 0 struct book arr[5];其中struct book 相当于 int 、char。这个够具体了吧。 本回答被提问者采纳 热心...

C语言 结构变量 A,c,j分别是什么意思,答案给的是A
A是用typedef struct语句定义的一个结构类型,c是A结构类型的一个变量,j是一个整型变量,int是计算机里有的类型,A是你新定义的一个类型它只不过是和int ,float,等一样的一个助记符,用A可以定义任意的变量,这些变量里面都包括自己的{int b,p;}。这就是面向对象的编程语言的原始形态A是一个类...

结构体和实体之间的关系有哪些?
1、结构体是由一批数据组合而成的一种新的数据类型。组成结构型数据的每个数据称为结构型数据的“成员”。2、实体在数据库中指某类事物的集合,把每一类数据对象的个体称为实体。3、结构体名字是类型名,变量名是实体名,一个类型可以有许多实体。4、结构体只是一种新的数据类型,当用结构体定义了...

C语言结构体定义
C语言结构体定义:struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。结构体是C语言中聚合数据类型(aggregatedatatype)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的...

相似回答