对C语言 结构指针变量做函数的参数 结构作为函数的参数
一、结构指针变量做函数的参数
/*
用指针变量作函数参数进行传送,这时由实参传向形参的只是地址,从而减少了时间和空间的开销。
*/
/*
计算一组学生的平均成绩和不及格的人数,用结构指针变量作函数参数编程。
*/
#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语言 结构指针变量做函数的参数 结构作为函数的参数相关推荐
- Day17 指针变量做函数形参 指针函数 函数指针
1. 指针变量做函数形参 1.1指针变量做一维数组形参 首先先了解如何定义一个一维数组指针 int arr[5] = {1, 2, 3, 4, 5};//定义一个一维数组 int *parr = ar ...
- 在c语言中定义了一个指针变量后,C语言的指针变量
C语言的指针变量 在C语言中,变量是固定范围的存储空间,它存储的是赋给他的值, 比如: int a = ; /* 这里是定义一个整型变量a,并把12这个值存储在a的地址空间上 这个地址空间是系统随机分 ...
- C语言 | 改变指针变量的值
例35:C语言编程实现改变指针变量的值. 解题思路: 指针p的值是可以变化的,printf函数输出字符串时,从指针变量p当时所指向的元素开始,逐个输出各个字符,直到遇'\0'为止.而数组名虽然代表地址 ...
- c语言指针赋值指针变量赋值吗,C语言_指针变量的赋值与运算,很详细
指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值.未经赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址, 决不能赋予任何其它数据 ...
- c语言用指针变量输入数组的长度,C语言之数组的基础练习题(指针变量做函数参数)...
1.交换两个变量的值: #include void swap(int *a,int *b) { int tmp; tmp=*a; *a=*b; *b=tmp; } void main() { int ...
- 智能指针变量做函数参数的一个值得注意的地方
作者:朱金灿 来源:http://blog.csdn.net/clever101 先考考大家,下面一段程序,会有什么问题: #include <iostream> #include < ...
- C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...
- 在c语言中指针变量名前面的*表示其后面的,C语言中的指针
-------------------------------指针--------------------------------- 指针? 内存单元的编号也叫做地址.既然根据内存单元的 号或地址就可 ...
- python是什么语言、即变量不需要显示声明数据类型-Python函数声明以及与其他编程语言数据类型的比较...
** 1.函数声明 ** 与其它大多数语言一样 Python 有函数,但是它没有像 C++ 一样的独立的头文件:或者像 Pascal 一样的分离的 interface / implementation ...
最新文章
- 您的用户界面是您产品不会因心灵感应而谦卑的补偿
- python基本语法语句-第二章 python基本语法元素
- leetcode17 电话号码的字母组合
- python help()函数(查看特定模块、关键词、函数等用法)
- 【NLP】医学AI又一突破,微软开源生物医学NLP基准:BLURB
- 【数据结构与算法】之旋转图像的求解算法
- 用yum源配合源码包安装openresty、mariadb、php7服务
- 20170513 Python练习册0011过滤敏感词
- 周鸿祎卸任奇安信董事 后者具备上市条件
- 用Vue来实现音乐播放器(八):自动轮播图啊
- jquery 的$()
- 大数据分析需要什么技术架构
- PIL库的总结与简单应用
- 实现了一个本地版本的在线json测试环境光-pythono
- EDIUS如何缩短时间线长度
- MySQL常用命令大全(完整)
- DIV+CSS布局-PxCook工具的简单使用
- spark-streaming 编程(五)updateStateByKey
- 【ESXi】失败 – “scsi0:0”的磁盘类型 2 不受支持或无效。请确保磁盘已导入
- php考试报名,报名系统
热门文章
- 网络编程学习笔记(SIGPIPE信号触发)
- 三、Ubuntu16.04 安装Jira8.2.2(自带中文包)和破解
- 使用 window.alert()
- linux基础2-cd、mkdir、touch、umask、chattr、lsattr、SUID/SGID/Sticky Bit
- 2018-06-02笔记
- python libnum库安装使用方法
- java二维码生成与解析代码实现
- 大龄屌丝自学笔记--Java零基础到菜鸟--001
- C++构造函数及析构函数的调用顺序
- VT-x,VT-d简介