首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言数组作为函数参数(数组元素做实参数组名称做形参)

数组元素的值做实参 数组元素作为实参时,将数组元素的值传递给形参,传递的方向是从实参向形参的单向值传递。 例:编写函数求一维数组的最大值。...a:b; } 数组名称做形参 当数组作为形参时,虽然形式上还是数组,比如void sort(int arr[ ]),但是并不意味着真正建立了一个包含和实参数组大小相同的数组,在调用函数时也不对它分配存储单元...,只是用array[ ]这样的数组形式表示array是一维数组名,来接收实参传来的地址,因此array中的方括号的数值并无实际作用,编译器对数组维度进行忽略。...,向形参变量传递的是数组元素的值 用数组名做函数实参时,向形参传递的是数组首元素的地址。...数组作为函数实参传递时,函数定义处作为接收参数的数组类型形参既可以指定长度也可以不指定长度。 数组元素作为函数实参传递时,数组元素类型必须与形参数据类型一致 。

2.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    01数组元素作函数实参 1、数组元素可以用作函数实参,不能用作形参。 2、在用数组元素作函数实参时,把实参的值传给形参,是“值传递”方式。 3、数据传递的方向是从实参传到形参,单向传递。...02 数组名作函数参数 1、除了可以用数组元素作为函数参数外,还可以用数组名作函数参数。...2、用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数实参时,向形参传递的是数组首元素的地址。 3、用数组名作函数参数,应该在主调函数和被调函数分别定义数组。...4、实参数组与形参数组类型应一致,如不一致,结构出错。 5、形参数组可以不指定大小,在定义数组时在数组名后面跟一个指针变量,用来接收一个地址。...C语言 | 统计捐款人数及人均捐款数 更多案例可以go公众号:C语言入门到精通

    2.7K2927

    C语言数组作为函数参数-学习十九

    数组元素作函数实参 数组元素就是变量,它与普通变量并无区别。因此它作为函数实参使用与普通变量是完全相同的, 在发生函数调用时,把作为实参数组元素的值传递给形参,实现单向的值传送。...除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参)。...在用数组名作函数参数时,不是进行值的传送,是把实参数组的首地址赋子形参数组名, 而不是把实参数组的每一个元素的值都赋予形参数组的各个元素。...用多维数组名作函数参数 多维数组元素与一维数组元素一样,可以看作一个变量,所以在调用函数时可以作为实参,进行值的传递。...用多维数组作为函数参数传递的是数组首元素的地址,要求形参是相同类型的同维数组。 这里,形参是二维数组时,第二维的大小(长度)必须指明,而第一维的大小(长度)可以指明,也可以不指明。

    1.7K20

    C语言数组作为函数参数「建议收藏」

    一:数组元素作为函数的实参 数组元素就是变量,与普通变量没有区别,将数组元素传送给形参,实现单向的值传递。...:%d",m); } 二:数组作为函数的实参 实质是地址的传递,将数组的首地址传给形参,形参和实参共用同一存储空间,形参的变化就是实参的变化。...:"); for(int i = 0;i < 10; i ++){ scanf("%d",&a[i]); } printf("排序后的数组顺序是:"); sort(a,10); for(int...i = 0; i < 10; i++){ printf("%d ",a[i]); } } 三:二维数组作为函数参数 第一维的大小可以不指定,第二维的大小必须指定。...实参传送的是二维数组的首地址,使得二维数组a与b共用同一存储单元,即a[0][0]与b[0][0]共用同一存储单元,a[0][1]与b[0][1]共用同一存储单元。

    1.8K10

    C语言定义数组时使用枚举作为数组的下标 ——c99功能

    在ANSI的标准确立后,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化创建过程中继续发展壮大。...《标准修正案一》在1994年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。...它通常被称为C99。C99被ANSI于2000年3月采用。...long, long double _Complex, float _Complex 等类型 支持不定长的数组,即数组长度可以在运行时决定,比如利用变量作为数组长度。...为了避免这种隐患可以在定义数组时候使用枚举作为数组的下标,这样即使数据输入混乱,但是只要数组定义时候枚举下标定义和数组成员可以对应正确就可以避免这种错误。

    1.2K60

    C语言】函数实参与形参详解

    一、实参            在C语言中,实参(实际参数)是在函数调用时传递给函数的值或表达式。它们是函数调用的真正参数,用于提供给函数所需的数据。...实参可以是常量、变量或表达式。 二、形参   在C语言中,形参(形式参数)是在函数定义中声明的参数,用于接收函数调用时传递的实际参数的值。形参用于定义函数的输入和输出,可以向函数中传递数据。...三、 实参和形参之间的关系         在C语言中,形参和实参是函数定义和函数调用之间的关系。 形参(形式参数)是在函数定义中声明的参数,它们用于接收函数调用时传递的实际参数的值。...形参和实参之间的关系可以理解为数据从实参流向形参的过程。         当函数被调用时,函数名称后面的括号中填写实参,然后实参的值被传递给相应的形参。这个过程称为实参传递。         ...在main函数内,变量x和y作为实参传递给add函数。实参将会被复制到对应的形参中,在add函数内部使用它们进行求和操作。

    53810

    C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一、结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二、完整代码示例 一、结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) ---- 在上一篇博客 【C 语言】结构体 ( 结构体...数组 作为函数参数 | 数组 在 栈内存创建 ) 的基础上 , 将 栈内存 中的 结构体数组 , 更改为 堆内存 中创建结构体数组 ; 在堆内存中 , 创建 结构体数组 : 传入 二级指针 , 该指针...可以在函数中 , 通过形参 间接赋值 , 达到返回创建堆内存的目的 ; /** * @brief create_student 堆内存中分配内存 * @param array 二级指针 , 指向结构体数组...* @param array 数组作为函数参数退化为指针 * @param count 数组中的元素个数 */ void printf_struct_array(Student *array,...int count) { // 循环控制变量 int i = 0; // 验证数组合法性 if(array == NULL) { return;

    1.5K30

    C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 栈内存创建 )

    文章目录 一、结构体 数组 作为函数参数 ( 数组 在 栈内存创建 ) 二、完整代码示例 一、结构体 数组 作为函数参数 ( 数组 在 栈内存创建 ) ---- 声明结构体类型 : 定义 结构体 数据类型...: // 声明结构体数组 , 该数组在栈内存中 Student array[3]; 命令行中接收数据 , 填充到结构体数组元素中 : // 命令行中 , 接收输入的年龄...age 成员中 scanf("%d", &(array[i].age)); } 结构体数组作为参数 : 使用 结构体数组 作为参数 , 可以进行间接赋值 , 修改该 结构体数组...的元素 , 可以当做返回值使用 ; 此时结构体 数组 会退化为 结构体指针 ; /** * @brief sort_struct_array 对结构体数组 按照年龄进行排序 * @param array...* @param array 数组作为函数参数退化为指针 * @param count 数组中的元素个数 */ void printf_struct_array(Student *array,

    1.6K20

    c语言 数组存放规则,C语言数组详解

    字符串在C语言中没有专门的字符串变量, 通常用一个字符数组来存放一个字符串。在2.1.4节介绍字符串常量时,已说明字符串总是以’/0’作为串的结束符。...因此当把一个字符串存入一个数组时, 也把结束符’/0’存入数组,并以此作为该字符串是否结束的标志。 有了’/0’标志后,就不必再用字符数组的长度来判断字符串的长度了。...C语言允许用字符串的方式对数组作初始化赋值。...这是由于在C语言中规定,数组名就代表了该数组的首地址。 整个数组是以首地址开头的一块连续的内存单元。如有字符数组char c[10],在内存可表示如图4.2。...说明gets函数并不以空格作为字符串输入结束的标志, 而只以回车作为输入结束。这是与scanf函数不同的。

    6.2K30

    C语言中函数形参与实参的区别

    众所周知一个函数有两种参数,即形参和实参。那么究竟什么是形参什么是实参呢? 形参:在定义函数时指定的参数,在未出现函数调用时,他们并不占用内存中的存储单元。...实参:即你调用函数时传递的参数。实参可以是常量、变量、表达式。 注意:形参和实参实际上占用的是两份不同的存储单元。  ...形参和实参之间的传递 在c语言中,实参与形参的数据传递是“值传递”,单向传递,只能由实参传给形参,不能由形参传递给实参。形参的值如果发生改变,并不会改变主调函数的实参的值。...形参与实参的之间的传递分类 1、按值传递(实形无联系) 按传递就是平常编程中经常用到的,定义一个基本数据类型的变量,在调用某函数时把该变量作为函数的实参传递给函数。...这种传递方式采用的是单向值传递,实形无联系,形参改变不影响实参。 2、按地址传递(通过操作形参可能会改变实参) 按地址传递主要出现在函数参数是指针变量、数组等的时候。

    1.1K20

    C语言——数组

    →   int arr [3] ={1,2,3}  数组如果初始化了,可以不规定大小,数组会根据初始化的大小来确定大小 c数组的类型 数组里的元素有分类型,数组也是有类型的,而数组算是一种自定义类型。...a,数组下标 C语言中,数组的下标是从0开始的,如果有n个元素,则第一个元素的下标为0,最后一个元素的下标为n-1 ,下面举例: 对于:            int arr [5] = {1,2,3,4,5...}; 数组元素:           1   2   3  4   5  对应下标:           0   1   2   3  4   C语言中 [ ] 是“下标引用操作符” ,...C99中的变长数组 一般来说,数组的大小指定只能使用常量,常量表达式,或直接初始化而省略大小: int arr1[10]; int arr2[3+5]; int arr3[] = {1,2,3};...         //初始化完后,数组的长度就规定好是3了 但是C99给了一个变长数组,让我们能使用变量指定数组大小,如: int n = a + b; int arr [n]; 上面的arr

    16010

    c语言_数组

    数组 1、数组的定义和使用 格式: 数据类型 数组名[元素个数] 元素个数,代表该数组有多少个相同数据类型的变量 下标 用来表示数组中的某一个元素 例如 int arr[10]; arr[1]代表数组的第二个元素...数组下标是从0开始的 到数组元素个数-1 数组下标越界:超出了数组元素个数的下标,如果操作越界数据会出现程序错误 1、乱码结果 2、报错 求出数组元素个数: int (size_t) unsigned...int 个数 = sizeof(数组名)/sizeof(数组元素 | 数组数据类型) 求出数组地址: printf("%p\n",数组名) printf("%p\n",数组元素) 数组元素+1 (sizeof...)/sizeof(数组名[0]); 求列数:sizeof(数组名[0])/sizeoef(数组名[0][0]) 二维数组首地址表示方式: printf("%p\n",数组名); 练习:10名学生 三门成绩...’\0’】之前的所有字符 在ASCII中就是数字0 ​ printf("%s", arr); ​ //for (int i = 0; i < 10; i++) ​ //{ ​ // printf("%c"

    4.5K20

    C语言——数组

    [ ] 中的常量值是⽤来指定数组的⼤⼩的,即数组元素个数, 不仅仅是常量值,也可以是常量表达式的形式,比如[3+5] 在 C99标准之前 ,C语⾔在创建数组的时候,数组⼤⼩的指定只能使⽤...也就是说,C语言 不 可以对数组的大小 作动态的定义 ,比如下面在两个定义方式是错误的 int n; scanf("%d",&n); int arr[n];//想要通过在程序中输入数组的大小 int...输出的结果是6(数组的元素个数) 易错点 当数组初始化有逗号表达式的时候,会取逗号表达式的最后一个内容作为初始化的值。比如下面的数组元素个数为4,输出1 4 5 6....二维数组 定义 如果我们 把⼀维数组作为数组的元 素 ,这时候就是 ⼆维数组 ,⼆维数组作为数组元素的数组被为三维数组,⼆维数组以上的数组统称为多维数组。...就像数学中的矩阵一样,有行(row)和列(column) 的排列形式, 我们把⼀维数组作为数组的行。

    6010

    C语言------数组

    :0 1 2 3 4 5 6 7 8 9 十六进制的数字:0 1 2 3 4 5 6 7 8 9 10-a 11-b 12-c 13-d 14-e 15-f 十六进制中,逢十六进一,,,,,6c+4...个位上的c+4等用于12+4=16,满16进一,1+6=7,所以6c+4=70 所以上述的数组的地址都只相隔4 1个int类型的字节占4个字节 得出结论: 1.数组在内存中是连续存放的 2.随着数组下标的增长...数组的创建 概念 将一维数组作为数组的元素,就是二维数组 将二维数组作为数组的元素,就是三维数组 二维数组以上的被称为多维数组 type name[行][列] 数组名字根据自己需求定义 float score...,列不能省略 int date[][5] = {{1,2},{3,4},{5,6}}; 二位数组的使用 数组名是地址 c语言默认行和列默认从0开始的 int arr[3][5] = {1,2,3,4,5... int main() { //char arr[] = "abc"; //a b c \0 //0 1 2 3对应的下标,最右边的结尾c所对应的下标应该-1

    7610

    C语言数组

    C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。...声明数组C 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示: type arrayName [ arraySize ]; 这叫做一维数组。...arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C 数据类型。...初始化数组C 中,您可以逐个初始化数组,也可以使用一个初始化语句,如下所示: double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}; 大括号 { }...所有的数组都是以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。以下是上面所讨论的数组的的图形表示: ?

    5.1K10

    C语言数组

    数组的理解 1. 数组是⼀组相同类型元素的集合。 2. 数组中存放的是一个或者多个数据,但是数组元素个数不能为0。 3. 数组中存放的多个数据,它们的类型是相同的。...一维数组  一维数组的创建并初始化  1. 创建一维数组的同时,最好给数组初始化,否则数组内将存放任意值。 2. 数组初始化分为两种:完全初始化和不完全初始化。...数组名实际上是数组首元素的地址。  2. 但是有两点例外: sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。  ...&(数组名),这里的数组名也表示整个数组,取出整个数组的地址。...整型数组,是存放整型的数组;字符数组,是存放字符的数组;指针数组,就是一种存放指针的数组 。 2. 可以利用数组指针实现二维数组的功能。 3.

    3500
    领券