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

C语言数组作为函数参数(3种写法,附带实例)

在 C语言程序中,将数组作为函数参数进行传递,不同于标准的赋值调用的参数传递方法,说明如下:

  • 当数组作为函数的实参时,只传递数组的地址,而不是将整个数组赋值到函数中;
  • 当用数组作为实参调用函数时,指向该数组的第一个元素的指针会被传递到函数中。

此时声明函数参数时必须使用和数组相同的数据类型,根据这一点,下面将对函数参数的各种情况进行详细的讲解。

C语言数组名作为函数参数

例如,编写函数 int fun(int lim,int aa[100]),其功能是求出小于或等于 lim 的所有素数,并放在 aa[100] 数组里,输出所有素数。

具体代码如下:

#include <stdio.h>  /* 包含头文件 */int fun(int lim, int aa[100])  /* 自定义函数 */
{int i, j = 0, k = 0;  /* 定义数组下标 */for (i = 2; i < lim; i++)  /* 判断是否为素数 */{for (j = 2; j < i; j++)if (i % j == 0)break;if (j == i)aa[k++] = i;}return k;  /* 程序结束 */
}int main()  /* 主函数 main() */
{printf("快速入门C语言和数据结构:https://xiecoding.cn/");int aa[100], i;  /* 定义变量 */fun(100, aa);  /* 调用 fun() 函数 */printf("100 以内的素数有:\n");  /* 输出信息 */for (i = 0; i < 25; i++)  /* 循环判断数组中的所有数 */{printf("%d\t", aa[i]);  /* 输出满足条件的数 */}printf("\n");  /* 换行输出 */return 0;  /* 程序结束 */
}

运行程序,结果为:

100 以内的素数有:
2       3       5       7       11      13      17      19      23      29      31      37      41      43      47      53      59      61      67      71      73      79      83      89      97

使用数组作为函数参数时,一定要注意函数调用时参数的传递顺序。

C语言可变长度数组作为函数参数

可以将函数的参数声明成长度可变的数组。

例如如下代码:

printf("快速入门C语言和数据结构:https://xiecoding.cn/");
void  Fun(char Name[]);   /*声明函数*/
char CName[10];           /*定义整型数组*/
Fun(CName);               /*将数组作为实参进行传递*/

从上面的代码可以看到,在定义和声明一个函数时将数组作为函数参数,并且没有指明数组此时的长度,这样就可将函数参数声明为长度可变的数组。

C语言指针作为函数参数

还可将函数参数声明为指针。指针作为参数和数组作为参数起同样的作用。将函数参数声明为指针的方法,也是C语言程序比较专业的写法。

例如,声明函数参数为指针,代码如下:

printf("快速入门C语言和数据结构:https://xiecoding.cn/");
void  Fun(int* p);    /*声明函数*/
int iArray[10];       /*定义整型数组*/
Fun(iArray);          /*将数组作为实参进行传递*/

从上面的代码可以看到,指针在声明 Fun() 函数时作为函数参数。在调用函数时,可以将数组作为函数的实参进行传递。

http://www.dtcms.com/a/592919.html

相关文章:

  • SPARQL文档导读
  • JavaEE初阶——JUC的工具类和死锁
  • 如何将自己做的网站发布到网上ui展示 网站
  • 上门家政小程序用户激励机制分析:用 “利益 + 情感” 双驱动,解锁高复购增长密码
  • 内网横向靶场——记录一次横向渗透(二)
  • Mysql作业四
  • 枣庄住房和城乡建设厅网站教育网站制作开发
  • 万象EXCEL应用(十六)便利店进销存毛利 ——东方仙盟炼气期
  • 单片机和C语言中的一些通用知识:(二)大端和小端
  • 【疑难解答】MySQL 报错 Public Key Retrieval is not allowed
  • 个人做AI产品,难点在哪里?
  • Electron 应用中的系统检测方案对比与鸿蒙适配实践
  • Apriel-1.5-15b-Thinker 中间训练新突破
  • 景安网站商城网站建设费用
  • 《MySQL数据库进阶(九):数据库备份与恢复(二)》
  • 进程 端口排查速查手册
  • 《中医基础理论》- 2.哲学基础之藏象学说
  • 【Java 开发日记】我们来说一下 Mybatis 的缓存机制
  • 做直播导航网站好西安网站搭建的公司
  • 简要概括自建网站的优缺点网站的标题怎么做吸引人
  • ⸢ 拾肆-Ⅰ⸥⤳ 实战检验应用实践(上):制定规范 开展演练
  • web网页开发,在线物流管理系统,基于Idea,html,css,jQuery,jsp,java,SSM,mysql
  • 企业级混合存储架构:MySQL + MinIO 混合存储实践
  • Android 底部导航栏 (BottomNavigationView) 制作教程
  • 当“老龄化”撞上“数字化”:金融业的“续命解药”还是“增长新图”?银行保险AI人工智能数字化营销销售培训老师培训讲师
  • ArrayList与LinkedList的比较
  • 魏公村网站建设建设部网站电话
  • MySQL索引篇 -- 从数据页的角度看B+树
  • 使用 Newtonsoft.Json(Json.NET)库将对象导出为格式化的 JSON 文件
  • 林州市网站建设给个网站好人有好报