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

#include <stdio.h>
typedef struct student STU;
struct student
{
char *name;
char *num;
struct student *next;
};

int main()
{
STU st1;
STU st2;
st1.next = &st2; //如果把这句换成st2就会报错
printf("%d\n%d\n",st2,&st2); //但是输出的st2和&st2的值是一样的,这怎么理解
return 0;
}

输出的值并不一样

st1.next=&st2;  这句, next是定义的一个指向struct student结构体的指针, 也就是说只能是一个地址值赋给它, 所以要用取地址符&来取得st2这个结构体的地址. 当然如果你前面定义的是STU* st1;  STU* st2; 又不一样

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-07-21
这个运行环境应该是很旧的C语言吧,准确地说,结构体变量名代表的是存储结构体成员的那个一大块空间,因此后面的输出准确地说是有逻辑错误的
因为next是结构体指针类型,所以前面只能被赋值为结构体变量的地址,需要&
第2个回答  2013-08-12
结构体变量名称其实就是指你用结构体定义出的这种类型,相当int,char,float这些。我们管int char float这些叫做内置类型,而自己用结构体定义的类型叫自定义类型。
st1.next = &st2; //如果把这句换成st2就会报错 这里肯定会报错,因为st1.next的类型是STU*(结构体指针)类型,而st2是STU(自定义结构体)类型,不同类型赋值自然会报错。
printf("%d\n%d\n",st2,&st2); //但是输出的st2和&st2的值是一样的,这怎么理解 其实这里你以%d输出 st2和&st2 的结果都是以整数形式解释并输出了st2的地址,故相同追问

st2代表什么,为什么st2和&st2的值是一样的

追答

st2在不同地方代表不同意义,比如STU st2中,st2代表声明一个STU型变量st2,而在 printf("%d\n%d\n",st2,&st2); 中,st2代表变量st2占用空间的首地址,而&st2代表取变量st2空间的地址,他们在数值上是相等的

第3个回答  2017-06-19
next是指针,所以要取地址
结构体不是用%d输出的。。。
第4个回答  2017-08-14
st2和&st2相同纯属巧合,因为你的结构体第一个变量为char* ,如果你的结构体变量第一个为int型,st2为结构体第一个变量的值,&st2为结构体第一个变量地址就不一样了。

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

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

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是一个类...

C语言中什么叫结构变量?它的作用又是什么?
就是结构体变量呗,就像C++里面的类一样。这样说吧,int型里面就是只能放整数,你自己定义个结构,给里面设置好放什么了,再把这个结构定义为类型,你定义的这种类型的变量就只能放你但是设置好的东西。

结构体变量是什么意思?
结构体变量的定义 结构体是一种数据类型(像int、char、flaot是数据类型一样),可以用它定义变量。用结构体类型定义变量的方式有三种:一、先定义结构体类型,再定义变量一般形式:struct 结构体名 { 类型标识符 成员名;类型标识符 成员名;……….};struct 结构体名 变量名表列;例、struct student...

相似回答