满意答案

lam950

2017.04.08

采纳率:59%    等级:8

已帮助:913人

C语言用结构体指针作函数参数

这种方式比用结构体变量作函数参数效率高,因为无需传递各个成员的值,只需传递一个地址,且函数中的结构体成员并不占据新的内存单元,而与主调函数中的成员共享存储单元。这种方式还可通过修改形参所指成员影响实参所对应的成员值。

例如

struct book

{

char bookname[30];

int quantity;

};

main()

{

void fun(struct book*p);

struct book book1={"Programming in C",10};

fun(&book1);

printf("%d copies\n", book1.quantity);

}

void fun(struct book*p)

{

printf("The book \" %s\" has ",p->bookname);

p->quantity -=3;

}

显示:The book "Programming in C" has 7 copies

此外,还可将结构体数组作为函数参数;还可设计结构体指针型函数,即返回的地址是指向结构体类型数据的。

00分享举报

c语言中结构体头文件是什么,函数形参里有结构体指针,为什么在头文件生相关推荐

  1. C语言中你可能会用到的字符串函数的代码

    将写内容过程中比较常用的内容段做个备份,下面资料是关于C语言中你可能会用到的字符串函数的内容. {if(dest == src)return dest;else if(dest < src){} ...

  2. Python编程语言学习:python语言中快速查询python自带模块函数的用法及其属性方法、如何查询某个函数关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略

    Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法.如何查询某个函数&关键词的用法.输出一个类或者实例化对象的所有属性和方法名之详细攻略 ...

  3. Go 语言中的一等公民:看似普通的函数,凭什么?

    大家好,我是煎鱼. 在 Go 语言中,一提函数,大家提的最多的就是 "Go 语言的函数是一等公民".这个定义来的非常突然,我们先了解一下什么是一等公民,他又凭什么? 根据维基百科的 ...

  4. c语言如何将字符转换为数字,C语言中一些将字符串转换为数字的函数小结

    C语言atoi()函数:将字符串转换成int(整数)头文件: #include atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * str); ...

  5. 如何在c语言中源文件调用另一个源文件的函数

    在源文件A1.c中调用A2.c 中的函数有两种方法: 1.在A2.c中有完整的函数定义,在A1.c中添加一下要用到的函数原型(声明)就可以了,例如:在A2.c中:有函数void A2(){...};在 ...

  6. c语言 信号函数,C语言中进程信号集的相关操作函数详解

    C语言sigismember()函数:测试某个信号是否已加入至信号头文件:#include 定义函数:int sigismember(const sigset_t *set, int signum); ...

  7. C语言中如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

  8. angular文件上传php,Angular2里获取(input file)上传文件的内容的方法

    最近在用Angular2,需要有一个上传文件的功能,但是又不想用库,所以直接用原生的input file 标签. 然后想获取上传的内容,于是先想了个愚蠢的方法,先通过id获取到这个input标签,然后 ...

  9. c语言 函数的参数传递示例_C语言中带有示例的remove()函数

    c语言 函数的参数传递示例 C语言中的remove()函数 (remove() function in C) The remove() function is defined in the <s ...

最新文章

  1. Log4J配置方式Java工程测试
  2. 微服务发现与注册之Eureka源码分析
  3. 中国引领全球主导人工智能竞赛
  4. bootstrapr表格父子框_使用Bootstrap Table建立父子表
  5. OpenCASCADE绘制测试线束:几何命令之约束
  6. 肝!用 Highcharts 绘制饼图,也很强大
  7. jvm系列二之GC收集器
  8. com+ system application 启动_dubbo启动引导过程(基于2.7.9)
  9. 堆和栈的概念和区别 python_堆的意思
  10. 记录——《C Primer Plus (第五版)》第七章编程练习第六题
  11. Linux下修改IP
  12. 委托/事件/线程传参简单理解
  13. MATLAB画演化博弈图,演化博弈matlab程序与作图
  14. 《编程珠玑》读解 一
  15. React-Native调用系统分享组件Share组件的使用
  16. U深度-重装电脑系统
  17. 通过5个概念 一文弄明白DAO
  18. PCB绘制成长日记1
  19. 全面解读系统更新,收藏下这份 Android 12 (S) 版本适配自查表
  20. no such file or directory, open '/Users/anna/package.json'的解决

热门文章

  1. 【Flink】FLink 反序列化空指针 java.lang.String.<init> SimpleStringSchema
  2. 【kafka】kafka docker jmx 远程连接 跨容器
  3. 【NATS streaming】NATS streaming 简介与安装
  4. 50-00-040-配置-Flink Configuration简介
  5. Spring : Spring 深入理解lombok
  6. hive-04-Hive函数大全
  7. 把VS Code打造成Java开发IDE,也挺爽!
  8. spring框架中Bean的基本属性及调用外部properties等配置文件的方法介绍
  9. 我的JavaWeb学习1
  10. ssm当用户登录成功显示用户名_从零到企业级SSM电商项目实战教程(十八)用户登录功能开发...