为您找到"
为什么我在函数中不能调用数组?
"相关结果约100,000,000个
数组只能通过指针传递,不能通过值传递。数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.1. 数组参数就是指向第一个元素的指针: #include <stdio.h> void getArr(int...
你可能还不是很了解,参数传递的形式,值传递,地址传递,引用传递(c++特性),而数组的传递形式就是一个地址传递,那么array的大小是4,他是一个指针,楼上说的很对。a[0]就等于是a+0,也指向的第一片地址,你第一片地址内有两个int类型数据,所以是8,。那么4/8都是整形,结果就整形,也就是...
你的createList的形参是int a[],等价于int *a。a是形参,是局部变量,只改变局部变量的值,在函数退出时它的值就无效了。下面的代码就是把局部变量a的值赋了malloc分配的地址,而这并不能影响到main函数中传递的实参a。如果一定要用指针来实现这个功能,就在main函数中调用createList处传入a的地址...
int a[3]={1,2,3};A.B(a);void B(int* values){ for(int i=0;i<10;i++)data[i]=values[i];} 注意这两段 代码 你传的数组只包含了3个元素 而 for(int i=0;i<10;i++)data[i]=values[i]; 中value[3]到value[10]的时候是没有分配内存的 所以出错 ...
有两种方式:1.将结构体声明为全局变量 2.将改结构体作为参数传给子函数,这样子函数就可以使用该结构体了
1.compareNumber方法的参数应该是一个整型数组 2.int[] arrayNumbers = arrangeNumbers.compareNumber(arrayNumbers); 这个重名也不行 int[] arrayNumbers1 = arrangeNumbers.compareNumber(arrayNumbers);3.outputNumber(int[] arrayNumbers)这个方法的参数应该是这样的 要不然你方法体里面的arrayNumbers他哪...
在值传递过程中被调函数参数值的更改不能导致实参值的更改。而如果是地址传递,由于传递过程中从实参传递过来的是地址,所以被调函数中形参值的更改会直接导致实参值的更改。因此,我们可以考虑把多个返回值作为数组元素定义成一个数组的形式,并使该数组的地址作为函数的形式参数,以传址方式传递数组参数。
一楼也说了,其实它传的是地址。如果按照你的那样的写法,那么它传过去的是数组中的一个指,而且你的那个值还是一个无效的值,因为数组越界了。你如果非要传整个数组的话,你可以把数组封装在一个结构体中,这样就可以了,不过这样做没有必要。
你可以返回s数组的首地址,函数可以这么定义:int* f1(int a[], int n, int k){ ...//你的代码 return s;}