btcq.net
当前位置:首页 >> C语言中在函数中声明数组类型的形式参数 >>

C语言中在函数中声明数组类型的形式参数

申明可以 void fun(a[]); 只起申明作用.调用时,就需要 fun(a,m); //m数组长度.数组的空间必须指定大小 ,但是可以采用动态分配空间,比如molloc函数.

函数声明是在main外面的,而且如果是声明就应该放在main前面.int fun(int a,int b);int main(){ int a,b,c; a = 1; b = 1; c = fun(a,b); return 0;}int fun(int a,int b){ /*实现*/}

当然要一致 不过,对于形参来说,只要类型一致就行,形参变量在定义时和声明时可以不一致,或者,在声明函数时,可以省略形参变量名,只写形参变量类型即可 比如你定义了 int max(int x,int y){ return x>y? x :y; }你的函数声明可以写成这三种形式的任意一种(一般来说使用第三种更简洁) int max(int x,int y); int max(int a,int b); int max(int,int);

根据数组的定义:数组定义是必须初始赋值或定义数组的长度.根据这个定义可知1、2是错的,D选项中只说明了数组为2行并没有说明数组的列数,所以也是错的.而C选项中一维数组有初始赋值0,是符合的,最终答案就只能是C了.所以答案为:C

按C的规定,A是正确的,被编译器解释为一个int*型指针;而B中两个[]都为空不行,后一个[]必须填有效值,不然编译器不知道第二维的大小,int a[][x]被编译器解释为(*)[x]指向有x个元素的一维数组的指针;int a[]={0}不能作形参,因为它已是初始化了的数组;int a[2][]是错误语句,C规定只有第一维可以不填值,由编译器编译时计算出来填上.;再看看别人怎么说的.

c语言不允许那样定义数组,你必须得先声明数组的大小.或者可以写成下面的形式:int size;scanf("%d",&size); int *a=(int *)malloc(sizeof(int)*size); for(i = 0;i 评论0 0 0

在C语言中,函数中要用数组做参数,可以采用三种方式,其中后两种均可适用于变长数组参数.1 直接以定长数组做参数,声明形式为:ret_type func(int a[100]); 这里就是以100个元素的数组做参数的.2 声明时不带长度,即:ret_type func(int a[]);3 以指针替代数组,即:ret_type func(int *a);2,3两种均可以用于变长数组.不过这种情况下,需要与函数约定数组长度的确定方法,比如约定规模 ,约定结束值,增加额外参数传长度,在数组元素中包含长度,或采用全局变量传长度等等.

写函数时写成指针,比如一维的是 *p 二维的就是 **p调用函数时,直接把对应的数组名当参数就行了,不要加[ ],传数组首地址进去就OK了

#include #define N 10 /*函数前置声明*/ int sortArr(int *p,int n); int printArr(int * p, int n); /*冒泡排序*/ int sortArr(int *p,int n) { int i, j, t; for(i = 0; i < n; i++) { for(j = 0; j p[j+1]) { t = p[j]; p[j] = p[j+1]; p[j+1] = t; } } } return 0; } /*打印数组*/ int printArr(int * p, int n) { int i; for(i=0; i

意思是指定参数的类型,它是不确定的,是一种约定.如果某一变量是这种类型,那么就可以把此变量传进函数去,后者也被成为实参(一个实际的变量)而形式参数的名字就作为实参的副本(广义上的副本)

sbsy.net | 369-e.com | zdhh.net | kcjf.net | gtbt.net | 网站首页 | 网站地图
All rights reserved Powered by www.btcq.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com