
第十章结柄、胀合与林举桌型 第四节在品数之同传递结构 结构、结构指针作为函数的参数 结构与函数的关系: 向结构中传递函数的成员; 在函数之间传递整个结构; 向函数传递结构的地址(指针) 向函数中传递结构的成员 在函数中传递结构成员的方法与传递简单变量 的方法相同: >在函数之间传递成员的值; >在函数之间传递成员的地址
第十章 结构、联合与枚举类型 结构与函数的关系: 向结构中传递函数的成员; 在函数之间传递整个结构; 向函数传递结构的地址(指针)。 向函数中传递结构的成员 在函数中传递结构成员的方法与传递简单变量 的方法相同: ➢在函数之间传递成员的值; ➢在函数之间传递成员的地址。 一、结构、结构指针作为函数的参数 第四节 在函数之间传递结构

第十草结柄、肤合与林茶美型 第四节在西数之间传递结构 实例 printf ("%d",man.birthday.year) 传递成员的值 scanf ("%d",&man.birthday.year); 传递成员的地址 gets (man.name); 传递结构成员的地址
第十章 结构、联合与枚举类型 实例 printf(“%d” ,man.birthday.year); 传递成员的值 scanf(“%d” , &man.birthday.year); 传递成员的地址 gets(man.name); 传递结构成员的地址 第四节 在函数之间传递结构

第十草特柄、联合与林茶桌型 第四节在品数之同传递结钓 在函数之间传递整个结构 将结构作为整体,在函数之间传递: >将结构变量作为形参; >函数的返回值为一个结构类型
第十章 结构、联合与枚举类型 在函数之间传递整个结构 将结构作为整体,在函数之间传递: ➢将结构变量作为形参; ➢函数的返回值为一个结构类型。 第四节 在函数之间传递结构

第十草结柄、联合与林茶桌型 第四节在品数之同传递结构 例:利用结构变量求解两个复数之积。 ①、(3+41)×(5+61) (10+20i)×(30+40i) struct complx int real; /*real为复数的实部*/ int im; /*im为复数的虚部 米 }; struct complx cmult(za,zb)/*函数返回值为结构类型*/ struct complx za,zb; /*形式参数为结构类型*/ struct complx w; w.real za.real zb.real za.im zb.im; w.im za.real zb.im za.im zb.real; return (w); /*返回计算结果,返回值的类型为结构*/ 例C10401
第十章 结构、联合与枚举类型 例:利用结构变量求解两个复数之积。 ①、(3+4i)×(5+6i) ②、(10+20i)×(30+40i) struct complx { int real; /* real为复数的实部 */ int im; /* im为复数的虚部 */ }; struct complx cmult(za,zb) /* 函数返回值为结构类型 */ struct complx za, zb; /* 形式参数为结构类型 */ { struct complx w; w.real = za.real * zb.real - za.im * zb.im; w.im = za.real * zb.im + za.im * zb.real; return(w); /* 返回计算结果,返回值的类型为结构 */ } 例C10_401 第四节 在函数之间传递结构

第十草特柄、联合与林茶桌型 第四节在品数之同传递结构 向函数传递结构的地址 向函数中传递结构的地址要将函数的形参定义 为指向结构的指针, 在调用时要用结构的地址作为实参。 例:输入10本书的名称和单价,按照单价排序。 程序中使用插入排序算法
第十章 结构、联合与枚举类型 向函数传递结构的地址 向函数中传递结构的地址要将函数的形参定义 为指向结构的指针, 在调用时要用结构的地址作为实参。 例:输入10本书的名称和单价,按照单价排序。 程序中使用插入排序算法。 第四节 在函数之间传递结构

第十章柄、联合与茶桌型 第四节在品数之同传递结构 插入排序的基本思想是:在数组中,有N个 已经从小到大已经排好序的元素,要加入1个 新的元素时,可以从数组的第1个元素开始, 依次与新元素进行比较 当数组中首次出现第i个元素的值大于 新元素时,则新元素就应当插在原来数组中的 第i-1个元素与第i个元素之间。 此时可以将数组中第1个元素之后(包 括第1个元素)的所有元素向后移动1个位 置,将新元素插入,使它成为第1个元素 这样就可以得到已经排好序的N+1个元素
第十章 结构、联合与枚举类型 插入排序的基本思想是:在数组中,有 N 个 已经从小到大已经排好序的元素,要加入1个 新的元素时,可以从数组的第 1 个元素开始, 依次与新元素进行比较。 当数组中首次出现第 i 个元素的值大于 新元素时,则新元素就应当插在原来数组中的 第i-1个元素与第 i 个元素之间。 此时可以将数组中第 i 个元素之后(包 括第 i 个元素)的所有元素向后移动 1 个位 置,将新元素插入,使它成为第 i 个元素。 这样就可以得到已经排好序的 N+1 个元素。 第四节 在函数之间传递结构

第十手猪构、联合与林茶奏型 第四节在岛数之间传递结钩 56 79 11 555 5 插入排序法示例
第十章 结构、联合与枚举类型 5 5 5 2 3 6 7 9 11 5 5 5 5 5 5 5 5 2 5 5 5 5 3 5 5 5 5 5 5 6 7 9 11 插入排序法示例 第四节 在函数之间传递结构

第十草结柄、肤合与林杀美型 第四节在岛数之同传递结构 #define NUM 10 struct book /*定义结构book*/ { char name [20]; /*书名*/ float price; /*单价 ; main struct book term,books [NUM]; int count; /*数组books的元素计数器*/ for (count=0;count<NUM; printf("Enter Name and Price.book %d=",count+1) scanf(“%s%f”,term.name,&term,price); sortbook (term,books,c count++) /*传递结构变量term和结构数组book数组的首地址)*/ printf (" BOOK LIST \n"); for (count=0;count<NUM;count++) printbook(&books[count]);/*传递数组中1个元素的地址*/
第十章 结构、联合与枚举类型 #define NUM 10 struct book /* 定义结构book */ { char name[20]; /* 书名 */ float price; /* 单价 */ }; main ( ) { struct book term, books[NUM]; int count; /* 数组books的元素计数器 */ for(count=0; count<NUM; ) { printf(“Enter Name and Price. book %d=", count+1); scanf (“%s%f” , term.name, &term.price); sortbook (term, books, count++); /* 传递结构变量term和结构数组book数组的首地址)*/ } printf("-------- BOOK LIST---------\n"); for(count=0;count<NUM;count++) printbook(&books[count]); /*传递数组中1个元素的地址*/ } 第四节 在函数之间传递结构

第十草结柄、联合与林茶桌型 第四节在品数之同传递结构 sortbook (term,pbook, count) struct book term; /*形参:结构变量term*/ struct book*pbook;/*指向结构数组首元素的指针pbook*/ int count; /*数组中已存入count个有序元素*/ int i; struct book *g,*pend pbook; for(i=0;iprice term.price) break; for q=pend-1;q>=pbook;q-- *(q+1)=*q; pbook term; /*在pbook处插入新元素term*/
第十章 结构、联合与枚举类型 sortbook (term, pbook, count) struct book term; /* 形参:结构变量term */ struct book *pbook; /*指向结构数组首元素的指针pbook */ int count; /* 数组中已存入count个有序元素 */ { int i; struct book *q, *pend = pbook; for(i=0; iprice > term.price) break; for( q=pend-1; q>=pbook; q-- ) *(q+1) = *q; * pbook = term; /* 在pbook处插入新元素term */ } 第四节 在函数之间传递结构

第十草结柄、肤合与林茶桌型 第四节在品数之同传递结构 printbook (pbook) struct book *pbook; {printf("%-20s%6.2f\n", pbook->name,pbook->price); } 例c10_402
第十章 结构、联合与枚举类型 printbook (pbook) struct book *pbook; { printf("%-20s%6.2f\n", pbook->name, pbook->price); } 例C10_402 第四节 在函数之间传递结构