子函数中定义的数组长度可以用主函数中的实参吗?
发布网友
发布时间:2024-03-07 17:23
我来回答
共2个回答
热心网友
时间:2024-03-29 20:35
不可以。定义数组不能用任何变量。只能用常量。如果一定要用变量,请用申请动态数组的方法,如C语言的malloc()函数。
热心网友
时间:2024-03-29 20:35
不行。数组长度只能是常数。
以数组名作函数参数时,实参数组与形参数组都不必定义长度,因此实参
不对 形参可以不定义长度,因为等效于指针。但实参 必须定义长度 即使是指针类型 ,也需要指向特定空间,或者分配动态内存,实际上 还是有长度约束的。最后一句实参与形参的结合方式是地址结合,与数组长度无关 这个是对的。
...在自己定义的函数A中定义了一个 整型数组p 又在A中把p当做实参传给...
数组使用数组还是用指针接收的
数组名作为函数参数的,应该在主调函数和被调用函数分别定义数组...
数组名作为函数参数,就是将数组的首地址传递到子函数中去。能理解这些就好了,至于你那句话,不知道是哪位高人又说多了,呵呵,估计是怕初学者搞不懂形参和实参都要说明清楚吧,其实就是废话。借用楼上的代码:void func(int a[],int n) //函数形参为数组 { int i;for( i=0;i<n;i++ )...
调用函数时,为什么实参中,数组不能指明行列数?
一楼也说了,其实它传的是地址。如果按照你的那样的写法,那么它传过去的是数组中的一个指,而且你的那个值还是一个无效的值,因为数组越界了。你如果非要传整个数组的话,你可以把数组封装在一个结构体中,这样就可以了,不过这样做没有必要。
为什么函数中的数组名不能做实参?
若使用一维数组名作函数实参,必须在主调函数中说明此数组的大小。关于用数组名作函数参数有两点要说明:(1) 如果函数实参是数组名,形参也应为数组名(或指针变量),形参不能声明为普通变量(如int array;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2) 需要特别说明的是: ...
可以用函数的形参来定义数组的大小吗?
可以, 但没什么意义, 行参指定了大小, 但是实参可以不传递这么大小的数组.它只须知道传递一个数组就行了 那就不可以了, 数组定义时大小必须是个常量,不过你可以这样:char *data = new char[size] ;
C中函数调用,数组的形参和实参与变量的实参和形参有什么不同
这是两种函数参数传递方法:1,你开始学的是值传递,即形参把实参的值复制过去,他们根本上是两个不一样的变量,只是值相同而已,所以对形参的任何操作不影响实参。2,数组名是数组首元素的地址,这是指针传递,把数组的地址传了过去,自定义函数拿到地址对数组进行操作,将影响这个数组。(注意这里没有...
...既然没有返回值,为什么在主函数中,数组值还是会变 ,
void sum(int x,int y){};这种是地址调用,是不会影响到实参的值的,要是按照地址调用(指针调用),是共享同一个存贮空间的,也就是改变的是同一个内存里面的内容,数组名的调用,就是指针调用的一种,int arr(int array[],int n){},你在函数里面改变array[]的值,实参里面也会改变的 ...
c语言中实参数组名与形参数组名能一样吗
当然可以一样,实参数组名和形参数组名是两个不同的存储单元,不会出现二义性问题的。
用数组名作为函数参数形参数组和实参数组可以不相同吗
函数的形参和实参跟参数名称无关,最主要的参数的类型陈述而已;当然可以不同,很多解释函数的样式就没有带参数名称的,如:int func(int,bool,char*);我们看到这样的表达,就知道如何调用这个func了。