精华内容
下载资源
问答
  • C语言数组作为函数参数

    万次阅读 多人点赞 2019-02-24 20:24:59
    一:数组元素作为函数的实参 数组元素就是变量,与普通变量没有区别,将数组元素传送给形参,实现单向的值传递。 #include <stdio.h> float max(float x,float y){ if(x > y) return x; ...

    一:数组元素作为函数的实参

    数组元素就是变量,与普通变量没有区别,将数组元素传送给形参,实现单向的值传递。

    #include <stdio.h>
    float max(float x,float y){
    	if(x > y)
    	return x;
    	else
    	return y;
    }
    int main(){
    	int a[6] = {3,2,1,4,9,0};
    	int m = a[0];
    	for(int i = 1;i < 6; i ++){
    		m = max(m,a[i]);
    	}
    	printf("数组中的最大元素是:%d",m);
    }

    二:数组名作为函数的实参

    实质是地址的传递,将数组的首地址传给形参,形参和实参共用同一存储空间,形参的变化就是实参的变化。

    #include <stdio.h>
    void sort(int b[],int n){
    	for(int i = 0; i < n - 1; i ++)
    	for(int j = 0; j < n-i-1; j ++)
    	if(b[j] > b[j+1]){
    		int temp;
    		temp = b[j];
    		b[j] = b[j+1];
    		b[j+1] = temp;
    	}
    }
    int main(){
    	int a[10];
    	printf("请输入数组的元素:");
    	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]共用同一存储单元。

    #include <stdio.h>
    //b[3][4]也正确
    int max(int b[][4]){
    	int max1 = b[0][0];
    	for(int i = 0; i < 3; i ++)
    	for(int j = 0; j < 4; j ++)
    	if(b[i][j] > max1){
    	max1 = b[i][j];
        }
    	return max1;
    }
    int main(){
    	int a[3][4] = {5,16,30,40,23,4,123,8,1,3,50,37};
    	int m = max(a);
    	printf("max is %d", m);
    }

     

    展开全文
  • c语言中有时需要数组作为函数的参数进行传参,那么应该怎样传递呢? 先看一下整数作为函数参数时的传参 #include <stdio.h> #include <stdlib.h> int Add(int a,int b) { int c; c = a + b; ...

    在c语言中有时需要数组作为函数的参数进行传参,那么应该怎样传递呢?
    先看一下整数作为函数参数时的传参

    #include <stdio.h>
    #include <stdlib.h>
    
    int Add(int a,int b)
    {
    	int c;
    	c = a + b;
        return c;
    }
    
    int main()
    {
    	int a = 1;
    	int b = 2;
        printf("%d",Add(a,b));
    	system("pause");
    	return 0;
    }
    

    可以看到当整数作为函数参数时实际参数为定义名字为a和b的变量,形式参数相当于定义了局部变量a和b
    按照这种方法我们可以把a和b换成一个数组,来进行函数和数组的结合
    先看代码

    #include <stdio.h>
    #include <stdlib.h>
    
    int Print(int array[3])
    {
    	int i;
    	for(i = 0;i < 3;i++){
    		printf("%d",array[i]);
    	}
    }
    
    int main()
    {
        int array[3] = {1,2,3};
        print(array);
    	system("pause");
    	return 0;
    }
    

    代码中定义了一个名为array的数组,有3个数,然后调用Print函数,实际参数为数组名array,在Print函数中形式参数为int型的数组,有三个元素,for遍历数组,这样就可以运行了。
    但是当形式参数中的3随便改一个数或者不写数时

    int Print(int array[10])
    int Print(int array[])
    

    运行结果没有任何影响,可以看到形式参数中的数并不代表实际参数中数组的长度,那么怎样才能把实际参数中数组的长度传到形式参数呢?
    下面介绍c语言关键字sizeof()
    在 C 语言中,sizeof() 是一个判断数据类型或者计算表达式长度的关键字。
    数组的sizeof值等于数组所占用的内存字节数
    如下

    	int array[3];
        printf("数组占的总字节数为%d\n",sizeof(array));
        printf("一个元素占的字节数为%d\n",sizeof(array[0]));
    

    上面定义了一个名为array,长度为3的数组,第二句打印的是数组占的总字节数,如果打印出来的话结果为12,因为一个int占4个字节,所以3个int占12个字节,第三句打印的是数组中的一个元素占的字节数,打印出来应该为4。
    那么数组的长度就应该为数组占的总字节数除一个元素占的字节数。

     printf("数组的长度为%d\n",sizeof (array)/sizeof(array[0]))
    

    上面运行结果应该为3,这样就算出了数组的长度,可以利用sizeof把数组的长度传递给形式参数,这样就可以在子函数中知道数组的长度了,方便遍历数组。
    代码如下

    #include <stdio.h>
    #include <stdlib.h>
    
    int Print(int array[],int data)
    {
    	int i;
    	for(i = 0;i < data;i++){
    		printf("%d",array[i]);
    	}
    }
    
    int main()
    {
    	int data;
        int array[3] = {1,2,3};
        data = sizeof (array)/sizeof(array[0]);
        Print(array,data);
    	system("pause");
    	return 0;
    }
    

    这样在调用Print函数时,将数组名和数组的长度都作为实际参数传递给了形式参数,在Print函数中就可以遍历数组了,在形式参数中的int array[ ]只是代表是一个数组,[ ]中有没有数字没有任何关系,一般为空。
    Print(array,data)中的array相当于数组的首地址,数组名 = 数组首地址,即 Print(array,data) = Print(&array[0],data),把地址传递给Print函数的,在Print函数中给数组赋值,遍历数组,改变数组中的元素都相当于直接操作的main函数中数组的值。

    展开全文
  • 1.整个数组当作函数参数,即把数组名称传入函数中,例如: #include<stdio.h> void temp(int arr[]) { int i; for(i=0; i<5; i++) { printf("%d\n", arr[i]); } } int main() { .

    47.数组作为函数参数

    变量可以当作参数,这里的数组也可以当作函数的参数。

    数组可以由整个数组当作函数的参数,也可以由数组中的某个元素当作函数的参数;

    1.整个数组当作函数参数,即把数组名称传入函数中,例如:

    #include<stdio.h>
    void temp(int arr[])
    {
        int i;
        for(i=0; i<5; i++)
        {
            printf("%d\n", arr[i]);
        }
    }
    int main()
    {
        int arr[5] = {1,2,3,4,5};
        temp(arr);
        return 0;
    }

    2.数组中的元素当作函数参数,即把数组中的参数传入函数中,例如:

    #include<stdio.h>
    void temp(int arrValue)
    {
        printf("%d\n",arrValue);
    }
    int main()
    {
        int arr[5] = {1,2,3,4,5};
        temp(arr[3]);
        return 0;
    }

    数组作为函数参数时注意以下事项:

    1.数组名称作为函数实参传递时,函数定义处作为接受函数的数组类型形参既可以指定长度也可以不指定长度。

    2.数组元素作为函数实参传递时,数组元素类型必须与形参数据类型一致。

    任务:

    替换指定数组中的最大元素。要求指定整数为数组arr2中的第一个元素arr[0]。

    #include<stdio.h>
    void replaceMax(int arr[],int value)
    {
        int max = arr[0];
        int index = 0;
        int i;
        for(i=1;i<5;i++)
        {
            if(arr[i]>max)
            {
            max = arr[i];
                index = i;
            }
        }
        arr[index] = value;
    }
    int main()
    {
        int arr1[] = {10,41,3,12,22};
        int arr2[] = {1,2,3,4,5};
        int i;
        replaceMax(arr1,arr2[0]);
        for(i=0;i<5;i++)
        {
            printf("%d ",arr1[i]);
        }
        return 0;
    }

    展开全文
  • C语言数组函数参数

    2018-02-04 16:26:51
    数组在作为函数形参的时候,传入的是一个地址值,而不是一个整个的数组,void exp(int a[])=void exp(*a).

    数组在作为函数形参的时候,传入的是一个地址值,而不是一个整个的数组,void exp(int a[])=void exp(*a).



    展开全文
  • C语言数组函数专题

    2018-12-02 18:19:33
    我们可以用数组来保存这些数据,而不是用很多个独立的变量。 数组是长度固定的数据结构,用来存放指定的类型的数据。 一个数组里可以有很多个数据,所有的数据的类型都是相同的。 ########## 定义数组 &lt;类型...
  • 数组作为函数的参数传递时,数组名会退化为指针 */ /** 运行结果: sizeof(acWelcome):30 strlen(acWelcome):19 sizeof(acWelcome):4 strlen(acWelcome):19 请按任意键继续. . . */ int main(int argc, char *...
  • c语言将二维数组当做一维数组传入函数,并能输出原二维数组的各元素,怎样理解?
  • 请你看程序运行结果,如果数组作为形式参数传入子函数,那么形式参数的值并不会影响原来main函数中的值,但是实际上,main函数中数组原来的值已经被修改了,这是因为数组传入的是地址(指针),我的问题就在这里,...
  • 主要是通过指针把数组,例如main里面的a的地址传入arry函数,然后在arry函数中用一个兼容类型的指针接收地址,然后就可以再这个指针下的地址操作地址上面的数据了。 arry返回的时候也是返回一个指针(地址)。 ...
  • 今天在写作业的时候,发现sizeof对于数组的使用,在传入函数前后是不一样的。...我们在把数组传入函数之前使用sizeof是正常的,用sizeof(a)/sizeof(a[0])得到 数组的长度 但是当我们传入一个函数之...
  • 经过一周的学习,从一开始的游戏中学习开始,递归函数(http://blog.csdn.net/qq_35576100/article/details/52087900)、一维数组的定义和应用(http://blog.csdn.net/qq_35576100/article/details/52105394)、二维...
  • 1、把数组的内存首地址和数组的有效长度传入函数。2、实参数组和函数参数数组的数据类型不一样。形参中的数组,编译器会把它当做一个指针处理,这是C语音的特色3、形参写在函数形参位置和写在函数内是一样的、二、...
  • C++ 中将二维数组传入函数

    千次阅读 2014-04-17 15:50:22
    C++ 中将二维数组传入函数 主要有三种方式 void fun(int *a[],int m,int n)//**a void fun2(int a[][2],int m)//a[2][2] void fun3(int (*a)[2],int m,int n)//a[2][2];int (*p)[2];p=a; //c语言中经常需要...
  • 我有一个char *s[6], 如果我写char**s是可以的,char *s[]也是可以的,char *s不行 但是我写void *s就不会报错是为什么呢
  • C语言数组作为函数参数 ** 函数参数表中的数组即指针 先来看一段代码 #include<iostream> #include<cstdio> #include<cstring> using namespace std; void f(int b[]){ printf("%p\n",&b[0]...
  • 因为数组作为形参传入函数后会退化成指针,对一个地址来取大小呢,如果是32位系统的话即为4,如果是64位系统的话为8,所以呢,在函数中sizeof获取的是指针的长度而不是数组的长度。第二呢,在函数中,sizeof的处理...
  • C语言数组作为函数参数的问题

    千次阅读 2015-07-02 00:04:58
    C语言数组作为函数参数运行的时候, 函数在执行的过程中,数组参数是否像其他类型的参数(例如:int类型)不发生改变的执行呢? 我们首先看一个示例,然后观看他的打印结果,然后分析原因二,代码示例和运行结果/* C语言中...
  • c语言数组传递

    千次阅读 2018-02-26 19:03:25
    转自:http://blog.csdn.net/xgmiao/article/details/9570825 点击打开链接数组作为函数实参:C语言数组作为函数实参时,编译器总是将其解析为指向数组首元素地址的指针(地址调用)原因:我们知道C语言函数的调用...
  • C语言数组元素地址作为函数参数

    千次阅读 2016-08-10 11:40:07
    今天首先来做一个题,值得借鉴。...//打印第六个元素,但是地址传入的第四个元素, getchar(); } void main() { int a[10] = {1,2,3,4,5,6,7,8,9,10}; fun(&a[3]); //把数组的第4个元素的地址传
  • C语言中,数组属于构造数据类型;如果想要同时保存多个相同类型 的数据时候,就要想到数组;定义数组:格式: 元素类型 数组名[元素个数];元素: 数组中保存的每一个数据就是元素;元素类型: 数组中存储的数据类型;数组...
  • 很久一段时间没有纯粹的编程了,今天偶尔换换脑子,想到以前很棘手的问题,如何在c语言中将多维数组当做参数传入函数,抛砖引玉,想到一个办法   使用typedef是一个很不错的办法 ...
  • } 扩展资料: 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的...
  • C语言数组

    2017-08-14 10:50:11
    说到初始化,C语言中的数组初始化是有三种形式的,分别是:1、 数据类型 数组名称[长度n] = {元素1,元素2…元素n};2、 数据类型 数组名称[] = {元素1,元素2…元素n};3、 数据类型 数组名称[长度n]; 数组名称[0] = ...
  • 传入函数后的数组成了什么? 对于一个普通变量传入的是值,对于一个指针传入的也是值,只不过这个值是一个地址。 先看一下下面的代码 #include&amp;amp;lt;stdio.h&amp;amp;gt; void minmax(int a[],...
  • /* 定义一个指针变量p,说明它是一个指向一个包含4个 整型变量一维数组的指针 */ int n; /* 定义形式参数n为整形 */ { int i; /* 定义用于循环的变量i */ for (i=0;i;i++ ) /* 这里循环4次用于打印一个同学的4门课...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,590
精华内容 14,636
关键字:

c语言数组传入函数

c语言 订阅