
C语言结构体变量名究竟代表什么 5
#include<stdio.h>typedefstructstudentSTU;structstudent{char*name;char*num;structstude...
#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;
} 展开
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;
} 展开
12个回答
展开全部
st2是STU类型,st1.next是STU*类型,你要st1.next = st2,那当然会错,因为类型不一样啊
输出结果一样,那是个随机数。我给你改下,你试试!.
现在不一样了吧
输出结果一样,那是个随机数。我给你改下,你试试!.
现在不一样了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
打个比方吧,比如int,这是一个整型对吧,以上结构体student也是和int一样,说明是一种student型,只是int只有一个单位,结构体里面可以按顺序有一排的单位而已~
“st1.next = &st2; //如果把这句换成st2就会报错”因为“next”是一个指针,所以你得赋一个地址给它,&不是取地址符嘛~意思就是把st1的尾巴和st2的首地址连起来了~
“printf("%d\n%d\n",st2,&st2); //但是输出的st2和&st2的值是一样的,这怎么理解”
这个输出形式我就感觉很奇怪啦,结构体也能用%d?这不是给整型变量用的么?输出结果是什么啊?如果输出是地址的话,那肯定是一样的~(不过C语言里能直接显示地址么,单片机什么的才是呀……有点记不清了~)
“st1.next = &st2; //如果把这句换成st2就会报错”因为“next”是一个指针,所以你得赋一个地址给它,&不是取地址符嘛~意思就是把st1的尾巴和st2的首地址连起来了~
“printf("%d\n%d\n",st2,&st2); //但是输出的st2和&st2的值是一样的,这怎么理解”
这个输出形式我就感觉很奇怪啦,结构体也能用%d?这不是给整型变量用的么?输出结果是什么啊?如果输出是地址的话,那肯定是一样的~(不过C语言里能直接显示地址么,单片机什么的才是呀……有点记不清了~)
追问
你运行一下试试啊,这么懒啊
追答
表示没有装这个软件……本人过了二级就没碰过C了……
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
追问
哎,你这些我都看过,怎么没抓住要害,st2代表什么,为什么st2和&st2的值是一样的
追答
str2就是个变量名嘛,就跟你定义了一个int x一样。
它的首地址要用&str2取出来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的意思是typedef struct {char dm{5};…………}PRO; typedef struct {char dm{5} …………}PRO;//上边这些是定义了一个结构体,名字为PRO 你字数限制了,我回答不完
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
st1.next是一个地址,这里也就是 st2的地址,一样的是因为他都是系统随机的,也就是传说中的乱码,你没用给他分配内存空间。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询