结构体指针

作者&投稿:敏贴 (若有异议请与网页底部的电邮联系)
结构体指针~

你不懂的还很多,要好好学习啊,下面是我对你程序的修正,已经能通过编译运行了,结果也正确了,你仔细好好看看吧!
#include
#include

struct Train_Time /*定义时间的类型的结构体*/
{
int hour;
int minute;
int second;
struct Train_Time *next;
};

struct Train_List //火车车次基本信息表结构体
{

char Train_Number[5];/*车次*/
char Start_Stop[10];/*始发站*/
char End_Stop[10];/*终点站*/
struct Train_Time *StartTime;/*开车时间*/
struct Train_Time *EndTime;/*到站时间*/
float Train_Mileage;/*公里*/
int SumTicket;//车票数量
struct Train_List *next;
};



void printall(struct Train_List* Train_List1)
{
printf("
车次始发站终点站开车时间到站时间总公里车票数量");
printf("
%s%s%s%d:%d:%d:%d:%d:%d:%f%d
",Train_List1->Train_Number,
Train_List1->Start_Stop,Train_List1->End_Stop,Train_List1->StartTime->hour,
Train_List1->StartTime->minute,Train_List1->StartTime->second,Train_List1->EndTime->hour,
Train_List1->EndTime->minute,Train_List1->EndTime->second,Train_List1->Train_Mileage,Train_List1->SumTicket);

}

void main()
{
struct Train_List *Train_List1;

Train_List1=(struct Train_List*)malloc(sizeof(struct Train_List));
Train_List1->StartTime=(struct Train_Time*)malloc(sizeof(struct Train_Time));
Train_List1->EndTime=(struct Train_Time*)malloc(sizeof(struct Train_Time));
printf("输入吧:");
scanf("%s%s%s%d%d%d%d%d%d%f%d",Train_List1->Train_Number,
Train_List1->Start_Stop,Train_List1->End_Stop,&Train_List1->StartTime->hour,
&Train_List1->StartTime->minute,&Train_List1->StartTime->second,&Train_List1->EndTime->hour,
&Train_List1->EndTime->minute,&Train_List1->EndTime->second,&Train_List1->Train_Mileage,&Train_List1->SumTicket);
printf("ok");
printall(Train_List1) ;
}

建议楼主找一下谭浩强的C++基础来看看
对于结构体的声明与定义问题:
1.直接定义,对于单文件的简单结构体比较适用。例如:
struct Student
{int num;
int name
}std1,std2;//直接定义了Student std1和std2,就像定义了int a和b。但没有初始化,后面再对立面的值详细赋值。
2.声明再定义,对于多文件的,复杂的结构体适用。
typedef struct Student//在文件A.h
{int num;
int name
};

Student std1={……};//文件B
Student std2={……};


这样处理以后其他文件要使用结构体(使用结构体存放系统数据,很多文件都要引用),直接外部声明就行了,避免了重复定义的错误。


对于你的问题:
typedef struct DuLNode{//先定义结构体DuLNode的结构
Elemtype data;//结构体里面又有结构体Elemtype data;这才是结构体的数据
struct DuLNode *prior;//再定义一个结构体DuLNode的指针
struct DuLNode *next;//再定义一个结构体DuLNode的指针
}DuLNode,*DuLinklist;//定义结构体DuLNode名称为DuLNode;另一个为结构体DuLNode结构体型指针

由于结构体DuLNode里面有一个数据结构体和两个指针,一般用作双链表节点的结构体。在定义之后,一个指向前一个结构体,另一个指向下一个结构体,这样的话就把一组结构体连起来了,对于输出,输出,物理、逻辑删除都方便,可靠,另外还可以动态创建。

首先,指针++以后是指向的下个该类型的变量,不是本身了

你是在main函数里调用这个code函数吧,HCP在code里面加了以后,是不影响main函数中hcp的值的,因为它是传值调用,不是传址调用,所以不会修改实际的HCP的值


C语言中p->x是什么意思
C语言中p->x是结构体指针变量p引用结构体成员x的方式。结构体指针变量引用结构体成员用箭头(->)非”结构体指针“变量引用结构体成员用点(.)如:struct test { int x; char str[100];} ;struct test data={1,"test"}; \/\/定义一个结构体变量Data,并初始化struct test *p ; \/\/定...

如何访问结构体指针的结构体指针成员
1、该种方法用指针指向一个结构体,使用时p->成员名。struct Student p;struct Student stu1={001,“zb”,90.5};p=&stu1;printf(“学号\\t姓名\\t分数\\n”);printf("%d\\t%s\\t%0.1f\\n",p->num,p->name,p->score);*\/ 2、该种方法是定义一个指针变量,只指向一个struct Student的...

为什么结构体里的指针会偏移量会多偏移两位
这个是结构体字节对齐问题。结构体在存储时,要求结构体成员变量的起始地址按照结构体内最大长度的变量为单位对齐。你这个结构体里 int,char*都是4字节的,该结构体按4字节对齐。存储的时候是这样的:第一个4字节,存放int型的age 第二个4字节,存放数组name的前4个元素 第三个4字节,第一个...

结构体中定义指向另一个结构体指针
定义一个结构体的变量的话,就为这个变量分配了空间了,这个变量已经占据了这段内存,其大小就是结构体的尺寸。而指针,只是声明有这么个指针,其大小也是指针占用的空间(一般相当于一个int,和机器有关),需要在其后做分配空间的操作后才能使用。

结构体定义指针,怎么得到其内容
1、输入头文件并且定义一个结构体类型。2、初始化结构体变量。3、调用结构体类型。4、输出表头。5、用一个for循环输出。注意事项:C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格...

结构体后面的指针怎么用的
这句的意思就是定义两个该结构体类型的指针,linklist就是结构体指针类型,你可以用head->p,或者last->p来访问结构体的成员。

结构体指针怎么不分配空间啊?有点迷惑,请大师帮忙分析以下两种情况...
你好,对于你的迷惑,一旦定义结构体指针,这个指针肯定是需要占空间的,因为指针存储的是它指向对象的地址,如果没有空间,它将这个地址存在哪呢,第一种情况,你首先定义了一个结构体指针*c,然后定义一个结构体变量d并将之赋予结构体指针c了,这是c就指向这个结构体(d)了,即c中记录的是结构...

c语言关于指向结构体的指针的理解
Polynomial *p 那p就是一个指向“PolyNode结构体指针”的指针。typedef struct { ...}*Polynomial;这说明Polynomial是定义指针类型的,指向对象是这个结构体。Polynomial p;就是定义了一个指向这种结构体的指针。

定义一个结构体指针,结构体指针中有一个成员为指针变量,那么此结构体...
第一种,是通过变量名访问。格式是,变量名加上. 例如你例子中的 M就是个变量名,可以M.m 表明访问结构体里面的成员m,这里m是个指针变量。第二种,就是通过指向结构体的指针来访问。 格式是,变量名加上—> 。比如,我声明一个结构体指针,将它指向M。 struct A* p;这里,p是一个...

请问结构体指针前面加*号表示什么?这个程序为什么不能执行?
表指针。st * str; 表示str是“指向结构体类型st的指针”实际上,(*str)既指向结构体,又指向结构体的第一个元素a。结构体第一个元素的地址就是结构体的地址。include<stdio.h> include<stdlib.h> main(){ typedef struct s{ int a;int b;}st;st * str;str=(st *)malloc(8);...

启东市17061415592: 结构体中的指针是什么意思呢? -
柳钞奥美: 1、结构体中的指针和结构体中的其他变量没有什么不同,结构体中的一个成员变量而已.只是这个变量是指针类型,和其他普通指针一样使用. 2、看变量名和结构体名称,你发的这种应该一般用在链表的实现中,这个Node结构体就是链表中的一个节点,然后结构体中定义一个指针变量next,用于指向下一个节点.

启东市17061415592: 定义一个结构体指针变量 -
柳钞奥美: 1、结构体指针的定义: struct node {int p;char node;char addr[30]; }a , *b; 2、结构体指针的使用: b=&a; a.p与(*b).p 与p->num是相同的意思. a.node与(*b).node与p->node是相同的意思. a.addr与(*b).addr与p->addr是相同的意思. 3、注意事项: (1)、结构体指针必须指向一个确定的结构体变量,如:p=&a; (2)、通过结构体变量的指针访问结构体的方法为: a.num、(*p).num、p->num.

启东市17061415592: 结构体指针定义 -
柳钞奥美: LinkList已经是指针型的了啊... LinkList * p 其实就是Node * * p

启东市17061415592: 关于结构体的指针
柳钞奥美: 首先,明白指针的实质是地址?不论什么指针都只存储了一个地址数据,即同一台机器里所有指针占的空间一样大.另外,指针代表的是实际数据单元的首地址,仅仅声明一个指针并没有分配数据空间,所以结构体指针实际用的时候需要用到动态内存分配.这就象用标签占位子,先贴上标签不管出处目前是否有人,你想坐的时候就对号入坐,该覆盖的就覆盖.贴标签仅消耗了标签,位置可能别人还在用,你坐上去才真正耗了座位.

启东市17061415592: 结构体指针,类指针是什么意思? -
柳钞奥美: 结构体是一个集合,类也是.一个就像原始人,一个就像现代人一样. 指针:指向结构体的指针叫结构体指针.指向类的指针叫类指针. 要我说,其实就是间接操作.有点像公司来了个新员工,你不知道名字,但是另一个人知道一样.你得通过另一个人才能找到那个新员工.

启东市17061415592: C语言的结构体及指针 -
柳钞奥美: int 是一种 数据类型 结构体 是一种 数据类型 int 是C语言预先定义好的 数据类型 结构体 是用现有的数据类型组合起来的 数据类型 我需要一个变量来存储整数, C语言已经有int这样的数据类型,我就直接声明一个int型变量:int a; 再把数据存进...

启东市17061415592: 结构体类型的指针 -
柳钞奥美: 一个结构体变量的指针就是该变量所占据的内存段的起始地址.可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址. 指针变量也可以用来指向结构体数组中的元素. 指向结构体变量的指针引用结构...

启东市17061415592: c语言关于指向结构体的指针的理解 -
柳钞奥美: 给你说吧.我说简单点.typedef的用法int a.;在int 前面加上typedef ,把a 改成任意的标识符,如 hh,现在就是typedef int hh;hh m;m就是一个int 的变量了.就像宏定义一样,..你那个按照这样理解就可以了

启东市17061415592: 什么是指针结构体
柳钞奥美: 应该是结构体指针,就是指向一个结构体内存地址的指针.

启东市17061415592: 结构体中定义的指针指向哪里 -
柳钞奥美: 定义一个结构体的变量的话,就为这个变量分配了空间了,这个变量已经占据了这段内存,其大小就是结构体的尺寸.而指针,只是声明有这么个指针,其大小也是指针占用的空间(一般相当于一个int,和机器有关),需要在其后做分配空间的操作后才能使用. 请采纳.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网