一、结构指针变量做函数的参数

/*

用指针变量作函数参数进行传送,这时由实参传向形参的只是地址,从而减少了时间和空间的开销。

*/

/*

计算一组学生的平均成绩和不及格的人数,用结构指针变量作函数参数编程。

*/

#include<stdio.h>
struct stu
{int num;char name[8];char sex;float score;
}boy[5] = {{101,"shi",'w',65},{102,"wen",'m',89},{103,"jie",'w',86},   {104,"jie jie",'m',70},{105,"hi",'m',76},};
int main(int argc,char **argv)
{struct stu *ps;void ave(struct stu *ps);ps = boy;ave(ps);return 0;
}
void ave(struct stu *ps)
{int c=0;int i;float ave;float s;for(i=0;i<5;i++,ps++){s += ps->score;if(ps->score < 60){c += 1;      }}printf("s=%f\n",s);ave = s/5;printf("average=%f\ncount=%d\n",ave,c);
}

二、结构作为函数的参数

您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。您可以使用上面实例中的方式来访问结构变量:

#include <stdio.h>
#include <string.h>struct Books
{char  title[50];char  author[50];char  subject[100];int   book_id;
};/* 函数声明 */
void printBook( struct Books book );
int main( )
{struct Books Book1;        /* 声明 Book1,类型为 Books */struct Books Book2;        /* 声明 Book2,类型为 Books *//* Book1 详述 */strcpy( Book1.title, "C Programming");strcpy( Book1.author, "Nuha Ali"); strcpy( Book1.subject, "C Programming Tutorial");Book1.book_id = 6495407;/* Book2 详述 */strcpy( Book2.title, "Telecom Billing");strcpy( Book2.author, "Zara Ali");strcpy( Book2.subject, "Telecom Billing Tutorial");Book2.book_id = 6495700;/* 输出 Book1 信息 */printBook( Book1 );/* 输出 Book2 信息 */printBook( Book2 );return 0;
}
void printBook( struct Books book )
{printf( "Book title : %s\n", book.title);printf( "Book author : %s\n", book.author);printf( "Book subject : %s\n", book.subject);printf( "Book book_id : %d\n", book.book_id);
}

三、结构体的指针变量  中可以存储  结构变量地址

您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:
struct Books *struct_pointer;
您可以定义指向结构的变量,如下所示:
struct Books Book1;
现在,您可以在上述定义的指针变量中存储结构变量的地址,为了查找结构变量的地址,请把&运算符放在结构名称的前面,如下所示:
struct_pointer = &Book1;

********让我们使用结构指针来重写上面(二中)的实例,这将有助于您理解结构指针的概念:

#include <stdio.h>
#include <string.h>struct Books
{char  title[50];char  author[50];char  subject[100];int   book_id;
};/* 函数声明 */
void printBook( struct Books *book );
int main( )
{struct Books Book1;        /* 声明 Book1,类型为 Books */struct Books Book2;        /* 声明 Book2,类型为 Books *//* Book1 详述 */strcpy( Book1.title, "C Programming");strcpy( Book1.author, "Nuha Ali"); strcpy( Book1.subject, "C Programming Tutorial");Book1.book_id = 6495407;/* Book2 详述 */strcpy( Book2.title, "Telecom Billing");strcpy( Book2.author, "Zara Ali");strcpy( Book2.subject, "Telecom Billing Tutorial");Book2.book_id = 6495700;/* 通过传 Book1 的地址来输出 Book1 信息 */printBook( &Book1 );/* 通过传 Book2 的地址来输出 Book2 信息 */printBook( &Book2 );return 0;
}
void printBook( struct Books *book )
{printf( "Book title : %s\n", book->title);printf( "Book author : %s\n", book->author);printf( "Book subject : %s\n", book->subject);printf( "Book book_id : %d\n", book->book_id);
}

对C语言 结构指针变量做函数的参数 结构作为函数的参数相关推荐

  1. Day17 指针变量做函数形参 指针函数 函数指针

    1. 指针变量做函数形参 1.1指针变量做一维数组形参 首先先了解如何定义一个一维数组指针 int arr[5] = {1, 2, 3, 4, 5};//定义一个一维数组 int *parr = ar ...

  2. 在c语言中定义了一个指针变量后,C语言的指针变量

    C语言的指针变量 在C语言中,变量是固定范围的存储空间,它存储的是赋给他的值, 比如: int a = ; /* 这里是定义一个整型变量a,并把12这个值存储在a的地址空间上 这个地址空间是系统随机分 ...

  3. C语言 | 改变指针变量的值

    例35:C语言编程实现改变指针变量的值. 解题思路: 指针p的值是可以变化的,printf函数输出字符串时,从指针变量p当时所指向的元素开始,逐个输出各个字符,直到遇'\0'为止.而数组名虽然代表地址 ...

  4. c语言指针赋值指针变量赋值吗,C语言_指针变量的赋值与运算,很详细

    指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值.未经赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址, 决不能赋予任何其它数据 ...

  5. c语言用指针变量输入数组的长度,C语言之数组的基础练习题(指针变量做函数参数)...

    1.交换两个变量的值: #include void swap(int *a,int *b) { int tmp; tmp=*a; *a=*b; *b=tmp; } void main() { int ...

  6. 智能指针变量做函数参数的一个值得注意的地方

    作者:朱金灿 来源:http://blog.csdn.net/clever101 先考考大家,下面一段程序,会有什么问题: #include <iostream> #include < ...

  7. C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...

    强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...

  8. 在c语言中指针变量名前面的*表示其后面的,C语言中的指针

    -------------------------------指针--------------------------------- 指针? 内存单元的编号也叫做地址.既然根据内存单元的 号或地址就可 ...

  9. python是什么语言、即变量不需要显示声明数据类型-Python函数声明以及与其他编程语言数据类型的比较...

    ** 1.函数声明 ** 与其它大多数语言一样 Python 有函数,但是它没有像 C++ 一样的独立的头文件:或者像 Pascal 一样的分离的 interface / implementation ...

最新文章

  1. 您的用户界面是您产品不会因心灵感应而谦卑的补偿
  2. python基本语法语句-第二章 python基本语法元素
  3. leetcode17 电话号码的字母组合
  4. python help()函数(查看特定模块、关键词、函数等用法)
  5. 【NLP】医学AI又一突破,微软开源生物医学NLP基准:BLURB
  6. 【数据结构与算法】之旋转图像的求解算法
  7. 用yum源配合源码包安装openresty、mariadb、php7服务
  8. 20170513 Python练习册0011过滤敏感词
  9. 周鸿祎卸任奇安信董事 后者具备上市条件
  10. 用Vue来实现音乐播放器(八):自动轮播图啊
  11. jquery 的$()
  12. 大数据分析需要什么技术架构
  13. PIL库的总结与简单应用
  14. 实现了一个本地版本的在线json测试环境光-pythono
  15. EDIUS如何缩短时间线长度
  16. MySQL常用命令大全(完整)
  17. DIV+CSS布局-PxCook工具的简单使用
  18. spark-streaming 编程(五)updateStateByKey
  19. 【ESXi】失败 – “scsi0:0”的磁盘类型 2 不受支持或无效。请确保磁盘已导入
  20. php考试报名,报名系统

热门文章

  1. 网络编程学习笔记(SIGPIPE信号触发)
  2. 三、Ubuntu16.04 安装Jira8.2.2(自带中文包)和破解
  3. 使用 window.alert()
  4. linux基础2-cd、mkdir、touch、umask、chattr、lsattr、SUID/SGID/Sticky Bit
  5. 2018-06-02笔记
  6. python libnum库安装使用方法
  7. java二维码生成与解析代码实现
  8. 大龄屌丝自学笔记--Java零基础到菜鸟--001
  9. C++构造函数及析构函数的调用顺序
  10. VT-x,VT-d简介