C语言中,数组做函数参数如何才能按值传递?
发布网友
发布时间:2022-04-25 02:10
我来回答
共5个回答
热心网友
时间:2022-06-29 02:57
传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。
void func(int array[10])
void func(int array[])
void func(int *array)
所以以上三种函数声明完全等同。
实际情况是,数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。
下一个问题是:为什么偏要按值传递呢?当要在一个函数内使用一个数组时,传一个指针进去不就行了?只要能访问到我们所要的数据并对其进行操作,何苦钻牛角尖。
热心网友
时间:2022-06-29 04:15
1、数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。
2、传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。
下面三种函数声明完全等同:
void func(int array[10])
void func(int array[])
void func(int *array)
热心网友
时间:2022-06-29 05:50
不可能按值传递的,设想一下
type *arr =。。。。。
sizeof(arr)为100万了字节,如果按照值传递,就要创建一个临时变量temp也为100万个字节,效率岂不是太低了。再可能arr是堆内存,参数传递是要属性相同,值相同,难道系统自行去new一段内存,这该用户去释放 还是系统自动回收呢?
热心网友
时间:2022-06-29 07:41
数组其实就是指针的退化,数组名其实就是一个指针。就直接按指针做函数的参数就好,然后将数组名传递进去给函数就行!在函数中对其的访问也是和数组的操作类似!具体的可以看一下书!
热心网友
时间:2022-06-29 12:14
数组给一个函数,常用的是可把数组的首地址传给函数。
即相当于是指针的应用
fun(int array[10][])
fun(int array[])
fun(int *array)
三种调用方法
C语言中,数组做函数参数如何才能按值传递?
void func(int *array)所以以上三种函数声明完全等同。实际情况是,数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。下一个问题是:为什么偏要按值传递呢?当要在一个函数内使用一个数组时,传一个指针进去不就行了?只要能访问到我们所要的数据并对其进行操作,何苦钻牛角尖。
c语言数组如何在函数中传递?不要指针传递
1. 数组参数就是指向第一个元素的指针: #include <stdio.h> void getArr(int p[], int si);int main(void){ int ns[] = {1,2,3,4,5};getArr(ns, sizeof(ns)/sizeof(ns[0]));getchar();return 0;} void getArr(int p[], int si) { int i;for (i = 0; i < si;...
C语言中,数组名作为函数参数,属于什么传递,为什么?
C语言中,数组名作为函数参数,属于数组参数传递。在VB6.0中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。数组型变量名本身只是该数组所占存储空间的首地址,函数调用时,系统不会为形参分配数组存储空间,而是仅仅分配一个存放数组地址(第一个元素地址)的存储...
C语言中,数组名作为函数参数,属于什么传递,为什么?
属于地址传递,在函数里修改的话,将直接影响调用方的数值。这是因为数组名代表这个数组的首地址,不过是静态不可更改的而已。在函数里用引用[i]下标时,就是找到这个数组第i号元素的地址进行修改的。所以是第于是地址传递。
c语言数组在函数中的传递
数组名本身就是地址,你在定义你两个方法时就定义指针类型就可以了,,然后能够直接操作数组的数据
请问在C语言中,函数传参时怎样利用指针传递数组
数组名就是指针,例如:include <stdio.h> void pr(char *p){ printf(p);} void main(void){ char s[] = "abc";pr(s);}
关于c语言中数组作为函数参数的函数之间调用问题
1、新建一个数组作为参数项目,如图所示:2、添加一个array.c文件,如图所示:3、包含stdio.h和stdlib.h头文件,如图所示:4、输入main函数主体及返回值,如图所示:5、定义一个数组arr,如图所示:6、定义一个function函数,如图所示:7、将数组作为参数传递给function函数,如图所示:8、运行程序,输出...
C语言问题,请问二维数组的函数参数是怎么传递的?
void shuchu(int **array_num);在函数中调用时,直接传递数组名就可以了,数组名可以视为数组的“头指针”,可以用这个指针进行一系列的相关操作,如图,可以按如下方式调用 shuchu(a);另外,一个建议:不要在传参时忽略数组的长度,最好显式的以参数的形式传递给函数 或者,在数组中做标志,在...
C语言里可以将数组作为参数,以值的方式传递给函数吗?
如果是只传数组的数值的话,是做不到的。如果传数组中某个值的地址的话,是可以做到的。简单来说:只能以传 数组地址 的方法来实现。
关于c语言中的结构体数组作为函数参数传递的
1、结构体数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样。就和普通指针一样使用,只不过它是结构体数组。2、例程:typedef struct Student{ char name[10] ; int age ;}Student;#define LEN 10 //print all Student infoma...