·重开贴·没人能帮我吗?

ccjiajia1919 2005-04-20 02:42:16
谁能给我一些关于 结构体作函数的参数 的讲解资料,越详细越好,谢谢!
30分相赠,不成敬意。

教程或例子都可以,两者都有更好。
...全文
96 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mefit 2005-04-20
  • 打赏
  • 举报
回复
结构体做函数的参数,可以传值,也可以传指针
和int、char等完全一样
同样的,结构体也不能利用传值来传结构体数组,和数组做函数参数是一样的用法
dophin1003 2005-04-20
  • 打赏
  • 举报
回复
应该随便一本c基础的书上都会说这个吧?
潭好强的书上有一小节“用指向结构体的指针做函数参数”也说到了。
听海拉拉 2005-04-20
  • 打赏
  • 举报
回复
up
ccjiajia1919 2005-04-20
  • 打赏
  • 举报
回复
谢谢dophin1003(浮云~~~)
有没更详细一点的资料???
包括函数内部的实现,及其一些限制等
dophin1003 2005-04-20
  • 打赏
  • 举报
回复
结构变量做参数,有传值和传址两种调用。
传值:
void fun(struct student s1){
....
}
void main(void) {
struct student s1;
fun(s1);
}
传址:
void fun(struct student *s1){
....
}
void main(void) {
struct student s1;
fun(&s1);
}
ccjiajia1919 2005-04-20
  • 打赏
  • 举报
回复
to 上面的兄弟

我要的是 结构体作函数的参数 这方面的资料啊
Merlin_Bloom 2005-04-20
  • 打赏
  • 举报
回复
10.3 结构体变量成员的引用方法
1.不把结构体变量作为一个整体进行输入、输出。在ANSI C中除了允许具有相同类型的结构体变量相互赋值以外,一般对结构体变量的使用,包括输入、输出、运算等都是通过结构体变量的成员来实现的。

表示结构体变量成员的一般形式是:
结构体变量名. 成员名 (其中的小数点是成员运算符,或称分量运算符)
如:student1.num 表示第一个人student1的学号num
student2.sex 表示第二个人student2的性别sex

2.如果成员本身又是一个结构体,则必须逐级找到最低级的成员才能使用。
如:student1.birthday.month 表示第一个人student1出生的月份
注:不能用 student1.birthday 来访问 student1中的成员birthday,因为它本身就是一个结构体变量。

3.成员可以在程序中单独使用,进行各种运算,与普通变量完全相同。
如: student1.num++
( “.”运算符的优先级最高,所以不是num++,而是对student1.num进行自加运算)

4.可以引用结构体变量成员地址,也可以引用结构体变量的地址。
如: &student1.num 表示结构体student1的成员num的地址
&student1 表示结构体student1的地址(首地址)

 结构体变量的赋值就是给各成员赋值。可用输入语句或赋值语句来完成。
【例】本例表示了结构体变量的赋值、输入和输出的方法。
main( )
{ struct stu /* 定义结构体stu */
{ int num;
char *name; /* name是一个字符串指针变量 */
char sex;
float score;
} student1,student2; /* 定义类型为stu的两个结构体变量student1、student2 */
student1.num=102; /* 给student1的成员num赋予102 */
student1.name="Zhang Ting"; /* 给student1的成员name赋予字符串首地址 */
printf("Input sex and score: ");
scanf("%c %f",&student1.sex,&student1.score); /*接收student1的sex、score值*/
student2=student1; /* 将student1的所有成员的值整体赋予student2 */
printf("Number=%d\nName=%s\n",student2.num,student2.name); /* 输出
printf("Sex=%c\nScore=%f\n",student2.sex,student2.score); student2各成员值*/
}
运行情况:
Input sex and score: F 78.5
Number=102
Name=Zhang Ting
Sex=F
Score=78.5
Merlin_Bloom 2005-04-20
  • 打赏
  • 举报
回复
10.2 结构体类型变量的说明方法
说明结构体变量有以下三种方法。以上面定义的 stu 为例来加以说明。
1. 先定义结构体,再说明结构体变量。
如:
struct stu
{ int num;
char name[20];
char sex;
float score;
};
struct stu student1,student2;
说明了两个变量student1和student2为stu结构体类型。

也可以用宏定义使一个符号常量来表示一个结构体类型。
如:
#define STU struct stu
STU
{ int num;
char name[20];
char sex;
float score;
};
STU student1,student2;

2. 在定义结构体类型的同时说明结构体变量。

这种定义的一般形式为:
struct 结构体名
{
成员表列
} 变量名表列 ;

如:struct stu
{ int num;
char name[20];
char sex;
float score;
}student1,student2;

3. 直接说明结构体变量。

一般形式为:
struct
{
成员表列
} 变量名表列 ;

如:struct
{ int num;
char name[20];
char sex;
float score;
}student1,student2;

 第三种方法与第二种方法的区别在于第三种方法中省去了结构体名,而直接给出结构体变量。

 说明了student1,student2变量为stu类型后,即可向这两个变量中各个成员赋值。

说明:
1.类型与变量是不同的概念。对结构体变量来说,在定义时一般先定义一个结构体类型,再定义变量为该类型。在编译时,对类型是不分配空间的,只对变量分配空间。只能对变量赋值、存取或运算,而不能对一个类型如此操作。

2.对结构体中的成员,可以单独引用,相当于普通变量。

3.在上述stu结构体定义中,所有的成员都是基本数据类型或数组类型。成员也可以又是一个结构体,即构成了嵌套的结构体。
如,有以下结构体定义:
struct date
{ int month;
int day;
int year;
};
struct
{ int num;
char name[20];
char sex;
struct date birthday;
float score;
}student1,student2;
首先定义一个结构体date,由month(月)、day(日)、year(年) 三个成员组成。
在定义并说明变量student1和student2时,其中的成员birthday被说明为data结构体类型。

4.成员名可与程序中其它变量同名,互不干扰。
Merlin_Bloom 2005-04-20
  • 打赏
  • 举报
回复
10.1 结构体类型定义和结构体变量说明
在实际问题中,一组数据往往具有不同的数据类型。例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。显然不能用一个数组来存放这一组数据。因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。
为了解决这个问题,C语言中允许用户自己指定一种构造数据类型——“结构体”(structure),它相当于其它高级语言中的“记录”。
“结构体”是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。结构体既然是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义函数一样。

 结构体类型的建立
定义一个结构体的一般形式为:
struct 结构体名 /* struct是声明结构体类型时所必须使用的关键词 */
{
成员表列
};
成员表列由若干个成员组成,每个成员都是该结构体的一个组成部分。
每一个成员也称为结构体中的一个域,因此,成员表列也称为“域表”。
对每个成员也必须作类型说明,其形式为:
类型说明符 成员名; (注:成员名定名规则与普通变量相当)
如:
struct stu
{ int num;
char name[20];
char sex;
float score;
};
(注:括号后的分号是不可少的)
以上定义了一个名为 stu 的类型,向编译系统声明这是一个结构体类型,该结构体由4个成员组成:
第一个成员为num,整型变量;
第二个成员为name,长度为20的字符数组;
第三个成员为sex,字符变量;
第四个成员为score,实型变量。

结构体定义之后,即可进行变量说明。凡说明为结构体 stu 的变量都由上述4个成员组成。由此可见,结构体是一种复杂的数据类型,而结构体变量是数目固定、类型不同的若干有序变量的集合。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧