C语言 结构体 求大神求解 为啥执行end->next->num 无法执行呢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 结构体 求大神求解 为啥执行end->next->num 无法执行呢相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
#include<stdlib.h>
#define NULL 0
#define LEN sizeof(struct stu)
struct stu
int num;
int age;
struct stu *next;
;
struct stu *creat(int n)
struct stu *he,*pf,*pb;
int i;
for(i=0;i<n;i++)
pb=(struct stu *)malloc(LEN);
printf("input Number and age\n");
scanf("%d%d",&pb->num,&pb->age);
if(i==0)
pf=pb;
he=pb;
else
pf->next=pb;
pb->next=NULL;
pf=pb;
return(pf);
void main()
stu *end;
end=creat(3);
printf("%d",end->next->num);
为什么return(he)可以
追问一下 这个题目为什么*he的next没有做什么操作它可以指向pb呢
想了一天了 没懂
其次else语句中的pf=pb;也是有问题的,因为执行了这一句pf就等于pb,也就是end等于pb;
end->next->num等于pb->next->num;由于pb->next=NULL;所以要从一个空指针输出一个数是不行的。
想要程序可以执行的话,可以在struct stu *he,*pf,*pb;下面添加pf = (struct stu*)malloc(LEN);
并且把pf=pb;语句删除。 参考技术A end都已经指向链表的最后一个元素了, end->next = NULL 参考技术B 你的意思是说he是指向头结点么?追问
对 he为什么指向了头指针 为什么返回pb 执行end->next->num就不行 而返回he,执行end->next->num就可以
追答if(i==0)
pf=pb;
he=pb;
原因在这里,第一次执行的时候给he赋了值,并且后面没有改变它,pb每次执行while会被改。pb=(struct stu *)malloc(LEN);
我是C语言新手。求大神解释一下这一道题,书里没解析的额
有一程序:
#include<stdio.h>
main()
struct cmplxint x;int y;cnum[2]=1,3,2,7;
printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);
运行结果是6。
求解析!!
cnum是结构体类型的数组,数组中有2个数组元素cnum[0]和cnum[1],每个数组元素都是结构体类型的变量。所以
cnum[0].x=1,cnum[0].y=3;
cnum[1].x=2,cnum[1].y=7;
则cnum[0].y/cnum[0].x*cnum[1].x的值是3/1*2=6追问
哦!原来如此,我还在纳闷怎么一个只有两个元素的数组有四个元素呢
参考技术A struct cmplxint x;
int y;
cnum[2]=1,3,2,7; //定义一个结构体,并同时定义一个该结构体类型的数组cnum, 初始化为:cnum[0].x=1 cnum[0].y=3 cnum[1].x=2 cnum[1].y=7追问
简单明了
参考技术B 3/1*2=6cnum[0].x=1
cnum[0].y=3
cnum[1].x=2 参考技术C 谁这么无聊写的这么烂的程序先将p指针使用一个for循环指向字符串末尾然后又将字符从末尾往前打印出来所以这个东西就是说反向打印字符串追问
你走错地方了吧......
以上是关于C语言 结构体 求大神求解 为啥执行end->next->num 无法执行呢的主要内容,如果未能解决你的问题,请参考以下文章
求!1+!2+!3+!4+!5 注:!5=1*2*3*4*5; 求用C语言编出来 我学到循环结构 求解 最好写些注释让我容易懂