易懂的数组作为函数参数(C语言)

article/2025/9/14 21:08:44

易懂的数组作为函数参数(C语言)

目录

  • 易懂的数组作为函数参数(C语言)
    • 1、数组做函数参数
    • 2、通过形参数组修改数组元素
    • 3、数组排序

1、数组做函数参数

(1)、若将一个数组作为实际参数传递给函数,只需不带方括号的数组名即可

若数组a的定义为:int a[10];
若要将数组a作为实参传递给被调用函数SumArr(),
则调用语句可写成:SumArr(a,10);

数组名代表数组首元素的地址,因此数组名做参数就可以将数组的起始地址传递给形参。另外需要将数组元素的个数也传递给被调用的函数。

函数SumArr()的函数原型如下:
int SumArr( int b[],int n )
//表示函数SumArr()期望用形参b来接收一个整型的数组,用形参n来接收数组元素的个数

程序1.1:调用函数SumArr()计算累加和

#include<stdio.h>
int SumArr(int arry[],int n);int main()
{int a[5] = {1,4,5,7,9};//求数组a中前5个数的和printf("%d\n",SumArr(a,5));return 0;
}int SumArr(int arry[],int n)
{int sum = 0;for(int i = 0;i < n;i++)sum +=arry[i];return sum;
}

(2)、形参数组与实参数组为同一数组

  1. 因为数组名是代表该数组的首地址,用数组名作实参时,是把实参数组的首地址赋给形参。
  2. 实际上形参数组和实参数组为同一数组,共同拥有一段内存空间。
    在这里插入图片描述
    (3)、参数声明
    (1)、在声明形参数组时,数组元素的个数不需要写在方括号中,如:
int SumArr(int array[],int n)
{...}//即便方括号中出现数字,编译器也将忽略该数字。在编译器看来,形参array不是一个真正的数组,只是一个可以存放地址的指针变量

(2)、向函数传递数组的时候,同时通过参数传递数组的元素的个数,有利于提高函数的通用性。

SumArr(a,5);//计算数组a的前5个元素之和
SumArr(a,3);//计算数组a的前3个元素之和

2、通过形参数组修改数组元素

一般变量作参数:传递的是数值,形参的值的改变不影响实参
数组做参数:传递的是数组的首地址,形参数组和实参数组实质上是同一块内存空间,形参数组发生改变,实参数组也随之发生改变。

程序2.1:通过调用函数ModifyArr(),将main()函数中数组a的每个元素变为原来的10倍。
a、通过函数修改数组元素

#include<stdio.h>
void ModifyArr(int arry[],int n);//每个元素变成10倍的函数原型int main()
{int i;int a[5] = {1,2,3,4,5};printf("原先的数组各元素分别是:\n");//未改变前输出for(i = 0;i < 5;i++)printf("%d\n",a[i]);ModifyArr(a,5);//调用函数改变元素值printf("变为原来的10的元素分别是:\n");//改变后输出for(i = 0;i < 5;i++)printf("%d\n",a[i]);return 0;
}void ModifyArr(int arry[],int n)
{for(int i = 0;i < n;i++)arry[i] *= 10;
}

b、把输出数组元素功能也包装成函数

#include<stdio.h>
void ModifyArr(int arry[],int n);//每个元素变成10倍的函数原型
void Print(int arry[],int n);//输出函数的原型int main()
{int i;int a[5] = {1,2,3,4,5};printf("原先的数组各元素分别是:\n");Print(a,5);//调用输出函数ModifyArr(a,5);//调用改变元素函数printf("变为原来的10的元素分别是:\n");Print(a,5);//调用输出元素return 0;
}void ModifyArr(int arry[],int n)
{for(int i = 0;i < n;i++)arry[i] *= 10;
}void Print(int arry[],int n)
{int i;for(i = 0;i < n;i++)printf("%d\n",arry[i]);
}

3、数组排序

给一个n个元素的数组进行升序,然后再依次输出:分别使用InputArr(),SortArr(),DispArr()实现数组的输入、排序、输出

#include<stdio.h>
#define N 20void InputArr(int arry[],int n);//输入元素的函数原型
void SortArr(int arry[],int n);//排序函数原型
void DispArr(int arry[],int n);//输出函数的原型int main(void)
{int n;int a[N];printf("Please enter the integers number:\n");scanf("%d",&n);InputArr(a,n);//输入n个元素存入数组中SortArr(a,n);//给n个元素进行升序DispArr(a,n);//输出n个元素return 0;
}void InputArr(int arry[],int n)
{int i;printf("Please enter the numbers:\n ");for(i = 0;i < n;i++)scanf("%d",&arry[i]);
}void SortArr(int arry[],int n)
{int i;int j;int temp;for(i = 0;i < n-1;i++){for(j = i+1;j < n;j++){if(arry[i] > arry[j]){temp = arry[i];arry[i] = arry[j];arry[j] = temp;}}}
}void DispArr(int arry[],int n)
{int i;printf("Please display the integers:\n");for(i = 0;i < n;i++)printf("%d\n",arry[i]);
}

http://chatgpt.dhexx.cn/article/E28451Oj.shtml

相关文章

以数组作为函数参数的函数调用

调用有参函数时需要提供实参&#xff0c;实参可以是常量&#xff0c;变量或者表达式&#xff0c;数组元素就相当于变量&#xff0c;因此数组元素可以用作函数实参&#xff0c;但是不能用作函数形参&#xff08;因为在函数被调用时临时分配存储单元&#xff0c;不可能为一个数组…

数组作为函数参数传递

数组作为函数参数传递 数组作为函数参数传递时&#xff0c;传入的是数组首地址&#xff0c;并非数组本身。今天总算理解了这一点。写了一个打印数组元素的函数&#xff0c;代码如下&#xff1a; void print1(int arr[]) {int len sizeof(arr) / sizeof(arr[0]);cout <<…

C++之数组作为函数参数

好消息&#xff0c;好消息&#xff0c;数组也可当参数啦&#xff01;&#xff01;&#xff01; 长这样&#xff0c; void arr(int a[])还挺好看&#xff08;生平第一次夸代码/狗头/&#xff09; 众所周知&#xff0c;变量可以当参数&#xff0c;但是数组当参数的话只能被认为…

C语言 数组作为函数参数

1、数组元素作为函数实参 int a[10]; //相当于定义了10个变量&#xff0c;a[0]~a[9]&#xff0c;那么数组元素就是&#xff1a;a[0]~a[9]&#xff0c;数组元素就可以当成变量使用。 #include<stdio.h> //函数声明 int whichmax(int x,int y); int main() {int a[10];a[1…

数组元素作为函数参数

数组元素作为函数参数 数组元素作为函数参数数组元素作函数实参数组名作为函数参数 数组元素作为函数参数 数组可以作为函数的参数使用&#xff0c;进行数据传送。数组用作函数参数有两种形式&#xff0c;一种是把数组元素(下标变量)作为实参使用&#xff1b;另一种是把数组名…

将数组作为函数参数调用

数组与单个元素一样&#xff0c;也可以作为参数被函数调用&#xff0c;但其用法与单个元素调用存在不同。 对于单个元素调用&#xff0c;如不使用引用&或者指针&#xff0c;则在函数中对形参的操作不会反映到实参上&#xff0c;即实参不会发生改变&#xff0c;具体用法详见…

零基础入门学习C语言008讲:函数(4)

8.&#xff17;数组作为函数参数 数组可以作为函数的参数使用&#xff0c;进行数据传送。数组用作函数参数有两种形式。 一种是把数组元素(下标变量)作为实参使用&#xff1b; 另一种是把数组名作为函数的形参和实参使用。 8.7.1 数组元素作函数实参 数组元素就是下标变量…

数组做函数的参数

&#xff11; 一维数组做参数 数组作为函数的参数&#xff0c;是指以数组名作为实际参数传递给函数。用数组名做函数参数时&#xff0c;不是进行直接的值传递&#xff0c;而是地址的传送&#xff0c;也就是把实参数组的首地址赋予形参数组名。 比如&#xff0c;下面声明了一个…

顺序表的基本操作代码实现

顺序的基本操作代码实现&#xff08;初始化、插入、删除、销毁等等&#xff09; 1.标头.h #pragma once #include<stdio.h> #include<stdlib.h> /*author:W.yuData:2020-04-27 */#define INITSIZE 10 //定义顺序表的初始最大长度typedef struct {int* data; //顺…

数据结构实验报告:顺序表基本操作的实现

1、实验目的 &#xff08;1&#xff09;领会线性表顺序存储结构的特点。 &#xff08;2&#xff09;掌握线性表顺序存储结构的常见算法。 2、实验具体要求 &#xff08;1&#xff09;建立顺序表存储数据序列&#xff08;10&#xff0c;20&#xff0c;30&#xff0c;40&…

顺序表基本操作的实现

实验一 顺序表基本操作的实现 一、实验学时&#xff1a; 2学时 二、实验目的 实现顺序表的基本操作 三、实验内容 顺序表的建立、取指定元素、返回指定元素位置顺序表中插入新元素、删除指定元素操作的实现 四、主要仪器设备及耗材 硬件&#xff1a;计算机一台软件&…

数据结构学习笔记——顺序表的基本操作(超详细最终版+++)建议反复看看ヾ(≧▽≦*)o

目录 前言一、顺序表的相关知识点二、顺序表的定义三、顺序表的初始化四、顺序表的建立五、顺序表的输出六、顺序表的逆序输出七、顺序表的插入操作八、顺序表的删除操作九、顺序表的按位和按值查找基本操作的完整代码十*、顺序表删除的常用操作十一*、顺序表的常用合并操作 前…

数据结构:顺序表的基本操作

线性表的顺序存储顺序表的线性存储示意图C语言定义线性表的顺序存储结构顺序表的基本操作顺序表的基础操作完整代码 线性表的顺序存储 线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素&#xff0c;使得线性表在逻辑结构上相邻的元素存储在连续的物…

顺序表的基本操作(C语言)

1.要求 编程实现顺序表的基本操作&#xff0c;并设计一个菜单调用。 ①建立&#xff08;初始化&#xff09;、遍历、取值、查找、插入、删除 ②判空、求元素个数、前驱、后继、置为空表、销毁 2.分析 我们需要去定义一个结构体&#xff08;以下代码的结构体名为SqList),其…

C语言实现顺序表基本操作

1.顺序表初始化 2.顺序表创建 3.求顺序表的长度 4.判断顺序表是否为空 5.向顺序表中插入元素 6.删除顺序表中元素 7.将顺序表翻转 8.将顺序表降序排序 #include<stdio.h> #define MAXSIZE 100//定义顺序表的最大存储个数 typedef struct SqList {int *base;int l…

顺序表基本操作

文章目录 1. 顺序表插入元素2. 顺序表删除元素3. 顺序表查找元素4. 顺序表更改元素 1. 顺序表插入元素 向顺序表中插入数据元素&#xff0c;根据插入位置的不同&#xff0c;可分为以下 3 种情况&#xff1a; 插入到顺序表的表头&#xff1b;在表的中间位置插入元素&#xff1…

顺序表的基本操作

一、实验目的&#xff1a; 1、复习C语言程序设计中的知识。 2、掌握线性表的顺序存储结构的表示和实现方法。 3、掌握顺序表基本操作的算法实现。 二、实验内容&#xff1a; 1&#xff0e;建立顺序表。 2&#xff0e;在顺序表上实现插入、删除和查找等操作。 三、实验要求…

数据结构-顺序表基本操作的实现(含全部代码)

今天起开始编写数据结构中的各种数据结构及其算法的实现。 主要依据严蔚敏版数据结构教材以及王道数据结构考研辅导书。 今天是线性表中的顺序表的实现&#xff0c;主要实现函数如下&#xff0c;读者有需要可以评论&#xff0c;我可以适当加几个。 CreateList(SqList &L…

PTA题目:顺序表基本操作

实现顺序表的基本操作&#xff0c;如初始化、插入、删除、输出等。 注意&#xff1a;顺序表中可有重复元素值。 要求&#xff1a;写出三个基本操作函数ListInsert&#xff0c;ListDelete&#xff0c;ListDeleteElem。 顺序表结构与操作函数接口定义&#xff1a; typedef char…

顺序表的操作,你真的学会了吗?

&#x1f30d;新人小白的博客 ⌛️希望大家多多关注 &#x1f383;以后会经常更新哒~&#x1f648; ⭐️个人主页&#xff1a; 收藏加关注&#xff0c;永远不迷路~ ⭐️ 顺序表的操作 前言一、目的二、步骤1.定义存储表示2. 定义操作函数3.采用菜单样式让操作更加方便清楚。4. …