精华内容
下载资源
问答
  • 几种C语言函数的参数与返回值 数组做函数参数 凡是变量可以出现的地方,都可以用数组代替,数组元素也可以用作函数实参,其用法与...double average(int n,double a[]) //形参数组可以不指定大小 { int i; double...

    几种C语言函数的参数与返回值

    数组做函数参数

    凡是变量可以出现的地方,都可以用数组代替,数组元素也可以用作函数实参,其用法与变量相同,向形参传递数组元素的值,数组名也可以实参和形参,传递的是数组第一个元素的地址。

    #include<stdio.h>
    double average(int n,double a[])      //形参数组可以不指定大小
    {
    	int i;
    	double sum=0,aver=0;
    	for(i=0;i<n;i++)
    	{
    		sum=sum+a[i];
    	}
    	aver=sum/n;
    	return aver;
    }
    int main()
    {
    	int j,N;
    	double b[100],s;
    	scanf("%d",&N);
    	for(j=0;j<N;j++)
    	{
    		scanf("%lf",&b[j]);
    	}
    	s=average(N,b);
    	printf("%lf",s);
    } 
    

    形参数组可以不指定大小,因为在C语言编译系统并不检查形参数组大小,只是将**实参数组的首元素的地址传给形参数组名。**因此,形参数组名获得了实参数组的元素的地址

    形参数组首元素和实参数组首元素具有同一地址,他们共同占用一个储存单元。

    指针做函数参数

    #include<stdio.h>
    int swap(int *a,int *b)
    {
    	int t;
    	t=*a;
    	*a=*b;
    	*b=t;
    }
    int main()
    {
    	int a=50,b=20;
    	swap(&a,&b);
    	printf("%d %d",a,b);
    }
    

    函数的调用可以(而且只可以)得到一个返回值,而使用指针变量作参数,可以得到多个变化了的值

    函数返回数组

    C 语言不允许返回一个完整的数组作为函数的参数。但是,可以通过指定不带索引的数组名来返回一个指向数组的指针。 如果您想要从函数返回一个一维数组,必须声明一个返回指针的函数,

    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h> 
    int *gt(int a[])
    {
    	int i;
    	srand( (unsigned)time( NULL ) );
    	for(i=0;i<10;i++)
    	{
    		a[i]=rand();
    	}
    	return a;
    }
    int main()
    {
    	int *b,j;
    	int c[10]={1,2,3,4,5,6,7,8,9,0};
    	b=gt(c);
    	for(j=0;j<10;j++)
    	{
    		printf("%d\n",b[j]);
    	}
    }
    

    函数返回值为指针

    #include<stdio.h>
    int s;
    int *sum(int x, int y)  //  x,y是形参
    {
    	s = x + y;
    	return &s;   //  返回s的指针
    }
    int main()
    {
    	int *r = sum(10, 9);
    	printf("10 + 9 = %d", *r);
    }
    
    

    *sum指针函数(函数值是指针).
    参考:
    深入理解指针
    srand((unsigned)time(NULL))详解

    展开全文
  • C语言数组学习心得(一)

    千次阅读 2015-04-03 17:32:16
    1.用数组名作为函数参数时,要求形参和相对应的实参都必须是...3.c编译系统对形参数组大小不做检查,所以形参数组可以不指定大小。 如果指定形参数组的大小,则实参数组的大小必须大于形参数组,否则因形参数组的部分元
     1.用数组名作为函数参数时,要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明
    2.用数组名作为函数参数,应在主调函数和被调函数中分别定义数组,且数据类型必须移植,否则结果将出错,形参数组中的[]必不可少,以表明该形参是一维数组
    3.c编译系统对形参数组大小不做检查,所以形参数组可以不指定大小。 如果指定形参数组的大小,则实参数组的大小必须大于形参数组,否则因形参数组的部分元素没有确定值而导致计算结果错误
    4.在普通变来那个作为参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元,在函数调用时发生的值传送是把实参变量的值赋予形参变量。在用数组名作为函数参数时,不是进行值传送,即不是把实参的数组的每一个元素的值都赋予形参的各个元素。因为实际上形参数组并不存在,编译系统不为形参数组分配内存。也就是数组名作为函数参数时,不是值得单向传递,而是把实参数组的首地址传给形参数组,这两个数组共用一段存储单元,即实参数组名和形参数组名共同指向数组的第一个元素。 在前面介绍过,数组名就是数组的首地址,因此在数组名作为函数参数时所进行的传送只是地址的传送,也就是说把实参数组U的首地址赋予形参数组名,形参数组名取得该首地址之后,也就等于有了实在的数组。
    ----------------------------------------------------------------------------------------------------------------------------------------------摘自《C语言宝典》 
    #include <stdio.h>


    /*
     * 输入数组
     */
    void input(int a[10],int n)
    {
    int i;
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    printf("\n");
    }

    /* 
     * 求最大值函数,形参为数组
     */
    int maxa(int a[],int n)
    {
    int i;
    int m;
    for(i=1;i<n;i++)
    if(m<a[i]) m=a[i];
    return m;
    }


    /*
     * 输出数组中的n个数据元素
     */
    void print(int *a,int n)
    {
    int  i;
    for(i=0;i<n;i++)
    printf("%4d",a[i]);
    printf("\n");
    }

    int main(void)
    {
    int b[10];
    int max;
    input(&b[0],10);//调用输入函数,往数组b中输入10个数据元素
    max=maxa(b,10);//求10个元素的最大值
    printf("array max is %d\n",max);
    printf("the array is :\n");
    print(b,10);//输出数组b中的元素
    } 

    展开全文
  • 1,形参数组可以不指定大小,在定义数组时在数组名后面跟一个空的方括号。有时为了在被调用函数中处理数组元素的需要,可以另设一个形参,传递需要处理的数组元素的个数。 2,用数组名作函数实参时,不是把数组元素...

    1,形参数组可以不指定大小,在定义数组时在数组名后面跟一个空的方括号。有时为了在被调用函数中处理数组元素的需要,可以另设一个形参,传递需要处理的数组元素的个数。

    2,用数组名作函数实参时,不是把数组元素的值传递给形参,而是把实参数组的首元素的地址传递给形参数组,这样两个数组就占用同一段内存单元。

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

    %f:用来输出单精度和双精度的数据,在科学运算中有很重要的作用。

    1,在不指定字段宽度时,单精度的有效位数一般为7位,输出6位小数,从第一个不为零的数开始前6位为有效数;双精度的有效位数为16位,输出6位小数,从第一个不为零的数开始前16位为有效位。

    2,%m.nf,指定输出的数据共占m列,其中有n位小数,如果长度小于m,则左端不空格。

    展开全文
  • 数组作函数参数

    2019-07-30 21:03:35
    被调用函数中用作形式参数的数组是单精度型,主调函数中用做实际参数的数组也是单精度型,也就是说实参形参数组类型应一致。 被调用函数中的数组array没有指定大小,但是【】能少,因为要处理该数组中的元素,所以...

    1.数组名作函数参数
    在编写程序的过程中可以用数组名作函数参数,这种方法实际上是通过数组的首地址传递整个数组。

    实战例子:

    求学生平均身高
    在这里插入图片描述

    通过上面的程序,强调下面几点

    被调用函数中用作形式参数的数组是单精度型,主调函数中用做实际参数的数组也是单精度型,也就是说实参形参数组类型应一致。

    被调用函数中的数组array没有指定大小,但是【】不能少,因为要处理该数组中的元素,所以又另设了个参数n,传递需要处理的数组元素的个数
    数组名作为函数参数时,应该在主调函数和被调函数中分别定义数组、
    前面提到过用数组名作参数实际上就是用数组的首地址传递数组,这样两个数组就共占同一段内存单元,形参数组中各元素的值发生变化会使实参数组元素的值同时发生变化

    实战例子

    直接插入排序原理
    下面是转载b站的直接插入排序视频
    https://www.bilibili.com/video/av18980488?from=search&seid=9764355816892447901

    在这里插入图片描述

    2.数组元素作函数参数

    数组元素只能用作函数实参,其用法与普通变量完全相同。用数组元素作实参和变量作为实参一样是单向传递的

    实战例子

    从键盘中输入10个数据,计算相邻两个数的和
    在这里插入图片描述

    执行结果如下

    在这里插入图片描述

    实战演练2
    统计字符串中大写字母的数量
    在这里插入图片描述

    结果如下

    在这里插入图片描述

    总结:数组元素作为实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。因此,并不要求函数的形参也是下标变量。总之,数组元素的处理与普通变量的处理方式是一样的。用数组名作函数参数时,则要求形参和相对应的实参必须是类型相同的数组,都必须有明确的数组说明。当形参和实参二者不一致时,即会发生错误。

    展开全文
  • 二维数组作为函数参数,实参可以直接使用二维数组名,在被调用函数中对形参数组定义可以指定所有维数的大小,也可以省略第一维的大小说明,如: void f(int a[3][4]); void f(int a[][4])...
  • 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且等价,...
  • 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且...
  • 二维数组当参数传入

    2015-09-19 18:33:30
     可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:   void Func(int array[3][10]);   void Func(int array[][10]);  ...
  • 说明 (1) 用数组名作函数参数应该在...因为编译对形参数组大小不做检查只是将实参数组的首地址传给形参数组 (4) 形参数组可以不指定大小为了在被调用函数中处理数组元素的需要可以另设一个参数传递数组元素的个数
  • 二维数组作为函数参数问题

    千次阅读 2012-07-30 18:36:07
    可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:  void Func(int array[3][10]);  void Func(int array[][10]);  二者都...
  • 正确写法: void Func(int array[3][10]);...用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明。 二者都是合法而且等价,但是...
  • C/C++二维数组作为函数参数传递

    千次阅读 2014-01-04 12:28:20
    在实际操作过程中,可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:  void Func(int array[3][10]); void Func(int array[][10]); ...
  • 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:  void Func(int array[3][10]);  void Func(int array[][10]);  二者都是合法...
  • 在被调函数中可以说明形参数组大小,也可以不说明形参数组大小 例如cat_str(char str1[],char str2[])也可以写成cat_str(char str1[N],char str2[M]). 实际上指定形参数组大小没有什么用。 c编译系统对形参数...
  • 8.7.2 数组名作函数参数 可以用数组名作函数参数此时形参应当用数组名或用指针变量 [例...(3)在被调用函数中声明了形参数组大小为10但在实际上指定大小起任何作用的因为C语言编译对形参数组大小不做检查只是将
  • 指针

    2015-04-25 09:17:00
    并不是真正的开辟一个数组空间,所以可以不指定数组元素的个数。 定义实参数组时必须指定数组大小,因为要开辟相应的数组空间。 3. a[i]和*(a+i)是等价的。二维数组中*(a+i)不是指“a+i所指单元中...
  • C++笔记 3.6 多维数组

    2020-07-08 23:54:42
    二维数组作为函数参数bai,实参可以直接使用二du维数组名,在被调用函数中zhi对形参数组定义可以指定所dao有维数的大小,也可以省略第一维的大小说明,如: void func(int a[3][4]); void func(int a[][4]); void f...
  • Set的两个toArray方法

    2020-08-03 19:44:00
    Set有两个toArray方法,①set.... toArray(T[])中形参数组不需要有值,只要是个实例对象就可以,并且其形参数组大小可以随意指定,如下所示: Set<String> set = new HashSet<>(Arrays.asList("张三".
  • 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且...
  • 一般传递二维数组的基本规则好像是这样的:可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以可以指定所有维数的大小,也可以省略第一维的大小说明。 如: void Func(int array[3][10]); ...
  • 在被调用函数中对形参数组定义时可以可以指定所有维数的大小,也可以省略第一维的大小说明。如:void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且等价,但是能把第二维或者更高维的...
  • 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:  void Func(int array[3][10]);  void Func(int array[][10]);  二者都...
  • 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以可以指定所有维数的大小,也可以省略第一维的大小说明,如:  void Func(int array[3][10]);  void Func(int array[][10]);  二者都...
  • 2维数组的传递

    2013-04-18 15:13:00
    可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且...
  • 二维数组的传递

    2013-08-08 17:01:59
    可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:   void Func(int array[3][10]);   void Func(int array[][10]);   ...
  • 二维数组的传参

    2013-03-02 16:21:01
    二级数组传递参数时,能以一个二级指针的方式,以二级... 可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:  void Func(int array[3]
  • 易语言 茶凉专用模块

    2010-05-04 12:26:36
    参数 临时透明色, 整数型, 可空, (#颜色)指定某颜色为完全透明(完全透明处不属于该窗口) 可空为不指定 .参数 鼠标穿透, 逻辑型, 可空, 可空为假 真:窗口被鼠标穿透 .子程序 窗口图标隐藏, , 公开, 将窗口的图标清除...
  • 此类函数通常用来完成一组指定的功能,可以返回或返回函数值。 (2)有参函数  也称为带参函数。在函数定义及函数说明时都有参数, 称为形式参数(简称为形参)。在函数调用时也必须给出参数, 称为实际参数(简称为...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 155
精华内容 62
关键字:

形参数组可以不指定大小