-
2021-11-25 20:24:50
数组元素作为函数的实参时,像形参变量传递的是数组元素的值,而用数组名作为函数的实参时,向形参(数组名或指针变量)传递的是数组首元素地址.参考如下代码可以更好的理解.
1数组名作为函数的参数
//1有一个一维数组score,内放10个学生,求平均成绩 #include<stdio.h> int main() { float average(float array[10]); float score[10],aver; int i; for (i = 0; i < 10; i++) { scanf("%f", &score[i]); } printf("\n"); aver = average(score); printf("average score is %5.2f\n", aver); return 0; } float average(float array[10]) { int i; float aver, sum = array[0]; for (i = 1; i < 10; i++) { sum = sum + array[i]; } aver = sum / 10; return aver; }
2数组作为函数参数
//输入十个数求出其中最大的元素 和该元素是第几个数 int main() { int max(int x, int y); int i, n,m,num[10]; printf("enter 10 integer numbers\n"); for (i = 0; i < 10; i++) { scanf("%d", &num[i]); } for (i = 0,m=num[0],n=0; i < 10; i++) { if (max(m, num[i]) > m) { m = max(m, num[i]); n = i; } } printf("The largest number is %d\nit is the %dth number.\n", m, n + 1); } int max(int x, int y) { return x > y ? x : y; }
更多相关内容 -
C语言中二维数组作为函数参数来传递的三种方法
2020-08-25 16:20:03主要给大家介绍了关于C语言中二维数组作为函数参数来传递的三种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C语言有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 -
shell 使用数组作为函数参数的方法(详解)
2020-09-15 10:18:53下面小编就为大家带来一篇shell 使用数组作为函数参数的方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
C语言中数组作为函数的参数以及返回值的使用简单入门
2021-01-01 01:11:31如果想通过一个一维数组作为函数的参数,就必须声明函数形式参数,使用以下三种方式与所有三个声明方法之一产生类似的结果,因为每一种方式告诉编译器,一个整数指针将会要被接收。类似的方式,可以使用多维数组形式... -
数组作为函数参数
2021-11-09 19:32:42数组作为函数参数 前面我们学过,变量可以当作参数是吧!这里数组也是可以当做函数的参数滴,啊?什么?你问数组咋当参数?请看下面知识。 数组可以由整个数组当作函数的参数,也可以由数组中的某个元素当作函数的...数组作为函数参数
前面我们学过,变量可以当作参数是吧!这里数组也是可以当做函数的参数滴,啊?什么?你问数组咋当参数?请看下面知识。
数组可以由整个数组当作函数的参数,也可以由数组中的某个元素当作函数的参数:
1、整个数组当作函数参数,即把数组名称传入函数中,例如:
2、数组中的元素当作函数参数,即把数组中的参数传入函数中,例如:
数组作为函数参数时注意以下事项:
1、数组名作为函数实参传递时,函数定义处作为接收参数的数组类型形参既可以指定长度也可以不指定长度。
2、数组元素作为函数实参传递时,数组元素类型必须与形参数据类型一致。
————————————————————————————————
任务
替换指定数组中的最大元素。要求指定整数为数组arr2中的第一个元素arr2[0]。
在代码编辑器中:
第22行填写相应代码
运行结果为
-
数组作为函数参数传递
2021-04-19 19:26:26数组作为函数参数传递 数组作为函数参数传递时,传入的是数组首地址,并非数组本身。今天总算理解了这一点。写了一个打印数组元素的函数,代码如下: void print1(int arr[]) { int len = sizeof(arr) / sizeof(arr...数组作为函数参数传递
数组作为函数参数传递时,传入的是数组首地址,并非数组本身。今天总算理解了这一点。写了一个打印数组元素的函数,代码如下:void print1(int arr[]) { int len = sizeof(arr) / sizeof(arr[0]); cout << sizeof(arr)<<endl; for (int i = 0;i < len;i++) { cout << arr[i] << " "; } }
main函数:
int arr[5] = { 1,2,3,4,5 }; print1(arr);
运行结果:
显然,并没有打印出数组所有元素。根据输出,sizeof(arr)=4;
sizeof(arr)/sizeof(arr[0])=1。很明显,如果传入的是数组本身,sizeof(arr)的值一定远大于4。传入的是地址的话,则刚好是4个字节。
再看我写的第二个打印函数:void print2(int arr[], int len) { for (int i = 0;i < len;i++) { cout << arr[i] << " "; } }
main函数
int arr[5] = { 1,2,3,4,5 }; int len = sizeof(arr) / sizeof(arr[0]); cout << "数组长度:"<<len<<" 数组所占空间:"<< sizeof(arr)<<endl; print2(arr, len);
运行结果:
结果准确无误。
总结:当数组作为函数参数传递时,不能在函数中用sizeof求数组长度。 -
C语言/C++ 数组作为函数参数
2021-05-19 08:14:22前几天帮别人解决数组拼接问题(类似字符串拼接)时想到这个专题。因为她的代码太糟糕。我们知道C、C++中的数组是没有拷贝(复制)运算的,除非编译器支持。因为C语言发明的初衷是替换汇编语言,要知道你用不同指令集的...前几天帮别人解决数组拼接问题(类似字符串拼接)时想到这个专题。因为她的代码太糟糕。
我们知道C、C++中的数组是没有拷贝(复制)运算的,除非编译器支持。因为C语言发明的初衷是替换汇编语言,要知道你用不同指令集的机器就要用不同的汇编语言。。。(此处省略800字议论文)
我们想一想,当我们声明定义一个数组时,定义了数组的哪些
int array[10] = {0};
从上面的代码中我们可以得知数组的类型是int, size是10。
所以我们使用参数传递函数时,就必须将类型和大小两个信息传递给函数。
C语言有两种方式可以实现:
字符串数组:
我们知道C语言中的字符串其实就是字符串(const char *str = "PHP IS THE BEST!";)数组。并且初学这也知道字符串是以\0结尾的。
对于字符串数组,通常\0后面的数据都不重要啊。
我们只需要把数组的地址(same as第一个元素的地址)传递给函数。
如果我们需要字符数组的size(其实不是size,确切的说是length),只需要strlen函数即可(后面的数据who cares)。
char str[20] = "hello world";
void function(char *str);
void function2(const char *str);
其他的数组:
对于其他数组我们只需要传递数组的第一个元素和数组的长度即可。
int array[10] = {0};
void function(int *arr, int size);
void function2(const int *arr, int size);
void function3(const int arr[], int size);
void function4(int arr[], int size);
当然调用的时候可能并不需要整个数组:
function3(array+1, 5);
这种情况就需要注意指针不要变成野指针。
你以为就这样结束了吗?
在C++中还有一种类型叫做引用。引用也可以传入函数。
void output(int n) {cout << n << ' ';}
void print(const int (&array)[10]) {
for_each(array, array+10, output);
}
int main(int, char **) {
int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
print(array);
return 0;
}
即使我们在print函数中使用sizeof也是能得到期待结果的。
但是我们可以明显的看到,我们函数声明中。引用的参数限定了数组的大小。也就是说不能动态的规定数组的大小。这就显得数组的引用非常鸡肋了。
总的来说,呵呵不是不会写的。
-
C语言数组、结构体、结构体数组作为函数参数
2021-03-27 16:05:32数组作为函数参数 如果想把一个数组名参数传递给函数,正确的函数形参应该是怎样的?它是应该声明为一个指针还是一个数组? 调用函数时实际传递的是一个指针,所以函数的形参实际上是一个指针,但为了使程序员新手更... -
易懂的数组作为函数参数(C语言)
2020-05-17 10:50:55易懂的数组作为函数参数(C语言) 目录易懂的数组作为函数参数(C语言)1、数组做函数参数2、通过形参数组修改数组元素3、数组排序 1、数组做函数参数 (1)、若将一个数组作为实际参数传递给函数,只需不带方括号的... -
二维数组传参(二维数组作为函数参数)
2021-11-23 20:13:52传递参数是二维数组 二维数组传参,函数形参的设计只能省略第一个[ ]的数字; 因为对于二维数组,可以不知道有多少行,但必须知道一行多少个元素; #include<iostream> using namespace std; void test(int... -
C++中数组作为函数参数的注意问题
2020-07-14 16:20:43C++中数组作为函数参数的注意问题 1 问题引入 从《剑指Offer》上的相关问题,下面的输出是什么? #include<iostream> using namespace std; int GetSize(int data[]) { return sizeof(data); } int main() {... -
数组作为函数参数使用方法总结
2019-10-24 22:07:43C/C++数组作为函数参数使用方法总结 一维数组作为函数参数的三种方法: 方法1:形参与实参都用数组; 方法2:形参与实参都用对应数组的指针; 方法3:实参用数组名,形参用引用; 二维数组作为函数参数的四种方法... -
C语言 二维数组作为函数参数的4种方式
2020-08-10 20:59:06然而,在将二维数组作为函数参数传递时,参数结构较复杂,难以理解。本文章是实用型文章,注重代码使用,不会讲述过多理论。如果想要学习理论知识(非常推荐,可以对代码的理解更透彻),可以查阅下方参考文献列出... -
C++之数组作为函数参数
2021-01-14 21:50:44好消息,好消息,数组也可当参数啦!!! 长这样, void arr(int a[]) ...void arr(int a[])//数组名作为函数的参数,传递的是一个地址(或常量指针) { int i; for(i=0;i<5;i++) { printf("%d\ -
c数组作为函数参数返回数组_数组作为函数的返回类型和方法参数
2020-09-12 05:04:49c数组作为函数参数返回数组 Arrays in Delphi allow us to refer to a series of variables by the same name and to use a number (an index) to tell them apart. Delphi中的数组允许我们使用相同的名称引用一... -
将数组作为函数参数调用
2021-10-15 14:40:41数组作为参数在函数中被调用的写法 -
c/c++ 一维数组、二维数组作为函数参数、返回值
2021-01-30 20:51:38c/c++ 一维数组、二维数组作为函数参数、返回值 一、一维数组作为参数 传入数组 int [] 为了规范,常常需要将数组的size一同传入,这是因为C++/C遇到参数为数组时,不会去一个个拷贝数组内的元素(太过于耗时),... -
二维数组作为函数参数的用法(c++)
2021-03-01 10:40:38今天刷题的时候遇到了需要一个大小可变的二维数组作为函数参数进行传递的情况,有点模糊不清,所以查了一些资料,写了这篇博客。 大小固定的二维数组 正确写法如下: void Func(int array[3][10]);//写出数组的固定... -
数组作为函数参数时函数的调用
2021-02-02 19:01:41若将一个数组作为实际参数传递给函数,只需不带方括号的数组名即可 若数组a的定义为:int a[10]; 若要将数组a作为实参传递给被调用函数SumArr(), 则调用语句可写成:SumArr(a,10); -
C/C++中二维数组作为函数参数------方法及要点讲解
2020-06-28 09:12:43C/C++中二维数组作为函数参数 的时候,可以不写行号,但是一定要写明列号(一定注意,一定注意,一定注意!)。 int array[3][3]; 函数声明:void fuc(int a[][3]); 函数调用:fuc(array); ——在函数fuc中,a是二维... -
C++关于数组作为函数参数的值传递和指针传递
2021-10-07 09:55:16数组作为函数参数和普通的参数是有区别的; 函数中普通的参数 如同void insert(int a,int b)之类的传递分为3种方式传递 值传递 指针传递,指针值的传递, 引用传递,它们的参数的传递是将实参的值赋给形参。 而... -
C语言数组作为函数参数
2019-10-03 08:15:361.数组元素作为函数的实参,本质上是把数组元素的值传递给了形参 实参与形参是两个不同的内存空间 #include<stdo.h> void sort(int n) ...2.数组名作为函数参数 本质上是数组名,地址的传递... -
golang用数组作为函数参数
2020-10-11 20:24:55作为参数传进函数时,传递的是数组的原始值拷贝,此时在函数内部是无法更新该数组的 package main import "fmt" func main() { x := [3]int{5,2,9} func(arr [3]int) { arr[0] = 8 fmt.Println(arr) }... -
指针、数组作为函数参数传递的方式
2020-06-21 16:56:43指针作为函数参数传递一维数组 C 语言中声明了一个数组TYPE array[n],则数组名称array 就有了两重含义: 第一,它代表整个数组,它的类型是TYPE[n]; 第二,它是一个常量指针,该指针的类型是TYPE*,该指针指向的... -
go代码-Go 数组作为函数参数
2021-07-16 11:34:21go代码-Go 数组作为函数参数