当前位置: 首页 > news >正文

【结构体-参数】结构体和结构体指针作参数

有三种应用形式:

1、结构体的成员作函数的参数。

与普通变量作函数参数的用法相同。值传送,不能修改实参的值。

2、结构体指针作函数的参数。

将结构体的地址传送给函数,效率高,可以修改实参的值

3、结构体作函数的参数。

将结构体的全部成员值传送给函数,效率低,不能修改实参的值。

结构体指针作参数的用法:

[例10.2]有一个结构体变量stu,内含学生学号、姓名和三门课程的成绩。要求在main中赋以值,在函数

print中打印输出。

#include "stdio.h"
#include "string.h"

#define format "%d\n %s\n %f\n %f\n %f\n"

struct student
{
 int num;
 char name[20];
 float score[3];
};

void print(struct student *p);

void main()
{
 struct student stu;


 stu.num = 12345;
 strcpy(stu.name, "Li Li");
 stu.score[0] = 67.5;
 stu.score[1] = 89;
 stu.score[2] = 78.6;

 print(&stu);}

void print(struct student *p) {
 printf(format, p->num, p->name, p->score[0], p->score[1], p->score[2]);
 printf("\n");
}

正确调用和错误调用:

正确:

1、

char func(struct compABC *ABC)

{

ABC->menber1 = 12;

ABC->menber2 = 34;

}

2、

char func(struct compABC *ABC)
{
    (*ABC).menber1 = 12;
    (*ABC).menber2 = 34;
}


错误:

char func(struct compABC *ABC)

{

   *ABC->menber1 = 12;

   *ABC->menber2 = 34;

}

(.的优先级高于*)

char func(struct compABC *ABC)

{

 *ABC.menber1 = 12;

 *ABC.menber2 = 34;

}

相关文章:

  • 【JAVA与C\C++】JAVA与C\C++ 的不同|JDK、JRE、JVM的区别
  • 【VC++学习日志】VCC++学习日志
  • 【JTAG、SBW、BSL】MSP430的BSL
  • 【stack pointer 】The stack pointer for stack is outside the stack range
  • 【浮点数转16进制】小数(单精度浮点数)转16进制字节
  • 【VISIO绘图】VISIO绘图 学习笔记
  • 【FLASH 操作】FLASH 读写等操作 学习
  • 【ARM9】ARM 2440 学习笔记
  • 【学习经验】学习经验总结
  • 【C到C++】C到C++ 学习笔记 【概念】
  • 【IAR外部编辑器】IAR 使用外部编辑器(VS2005/2008/2010等)的设置
  • 【捕获比较模式】msp430定时器比较捕获理解
  • 【C/C++】C语言signal信号|软中断信号|程序捕获Ctrl+C 信号
  • 【setjmp和longjmp 】 C语言的非局部跳转:setjmp和longjmp(跨函数长跳转)
  • 【C到C++】关于 Complex (复数类)
  • [数据结构]链表的实现在PHP中
  • 【面试系列】之二:关于js原型
  • Apache的80端口被占用以及访问时报错403
  • AWS实战 - 利用IAM对S3做访问控制
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java Agent 学习笔记
  • JavaWeb(学习笔记二)
  • leetcode46 Permutation 排列组合
  • PaddlePaddle-GitHub的正确打开姿势
  • ReactNativeweexDeviceOne对比
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Tornado学习笔记(1)
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 百度地图API标注+时间轴组件
  • 读懂package.json -- 依赖管理
  • 近期前端发展计划
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • scrapy中间件源码分析及常用中间件大全
  • 大数据全解:定义、价值及挑战
  • #etcd#安装时出错
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (5)STL算法之复制
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)setTimeout 和 setInterval 的区别
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .Net IOC框架入门之一 Unity
  • .Net Winform开发笔记(一)
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [1204 寻找子串位置] 解题报告
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [C++]高精度 bign (重载运算符版本)
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算