c语言数组的传递
Ⅰ c语言怎么将数组作为函数参数传入
一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#include<stdio.h>
//数组作为函数参数,可以省略元素个数
//数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
输出结果为: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100
Ⅱ c语言的数组怎么传递到函数里面
例:
#include<stdio.h>
voidfact(int*p,intn)
{
for(i=0;i<n;++i)
{
printf("%d",p+i);
}
printf(" ");
p[3]=6;
}
intmain()
{
inta[5]={1,2,3,4,5};
fact(a,5);
for(i=0;i<5;++i)
{
printf("%d",a[i]);
}
printf(" ");
return0;
}
Ⅲ 在C语言中,数组作为参数,是怎样在函数之间传递
很简单的,数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址 .给个程序看看
#include<stdio.h>
#define N 3
int array[N][N];
void main()
{
//在主函数内声明被调函数
void convert(int array[][3]);
int i,j;
printf("输入数组:\n");
for(j=0;j<N;j++)
for(i=0;i<N;i++)
scanf("%d",&array[i][j]);
printf("\n");
for(j=0;j<N;j++)
{
for(i=0;i<N;i++)
printf("%d\t",array[i][j]);
printf("\n");
}
//调用矩阵转置函数
convert(array);
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
}
void convert(int array[][3])
{
int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<N;j++)//设置数组中转置矩阵元素交换
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
Ⅳ C语言中怎么将数组作为函数传递初学,求解
属于地址传递,在函数里修改的话,将直接影响调用方的数值。这是因为数组名代表这个数组的首地址,不过是静态不可更改的而已。在函数里用引用[i]下标时,就是找到这个数组第i号元素的地址进行修改的。所以是第于是地址传递。
Ⅳ c语言函数怎么传数组
C和C++都没有办法传数组,只能传“指针”,指针和数组的差别就在于函数内无法检测数组的尺寸
Ⅵ c语言中数组参数传递
在vs2010中楼主的程序传参没有出现问题,注意输出如果用printf的话,格式应为printf("%f",a[1][1]);
附测试代码如下:
#define N 3
double Determinant(double a[][N],int n)
{
int i,j;
int R = 0;
printf("size a is %d\n",sizeof(a));//你会发现传过来的只是其中一个一维数组a[][3],但是由于C的灵活性,可以通过指针访问的方式来访问其他内容。
for(i = 0;i<3;i++){
for(j = 0;j<3;j++){
printf("i is %d,j is %d,a is %f\n",i,j,a[i][j]);
}
}
return R;
}
int main(int argc, _TCHAR* argv[])
{
double a[3][3];
int i,j,k;
for(i = 0;i<3;i++){
for(j = 0;j<3;j++){
a[i][j] = (i+1)*j;
}
}
k = Determinant(a,3);
getchar();
return 0;
}
Ⅶ C语言中,数组名作为函数参数,属于什么传递,为什么
C语言中,数组名作为函数参数,属于数组参数传递。在VB6.0中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。
数组型变量名本身只是该数组所占存储空间的首地址,函数调用时,系统不会为形参分配数组存储空间,而是仅仅分配一个存放数组地址(第一个元素地址)的存储空间,此后,将实参数组的首地址传递给形参变量。
(7)c语言数组的传递扩展阅读:
数组参数在传递时应注意以下两个方面:
1、 在实参和形参列表中只写数组名,忽略维数的定义,但圆括号不能省,当数组作为参数传递时,系统将实参数组的起始地址传给过程,使形参数组也具有与实参数组相同的起始地址,若参数是多维数组,每维以逗号分隔。
2、被调过程可分别通过Lbound和Ubound函数确定实参数组的下界和上界。
Ⅷ C语言中,数组做函数参数如何才能按值传递
传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。
void func(int array[10])
void func(int array[])
void func(int *array)
所以以上三种函数声明完全等同。
实际情况是,数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。
下一个问题是:为什么偏要按值传递呢?当要在一个函数内使用一个数组时,传一个指针进去不就行了?只要能访问到我们所要的数据并对其进行操作,何苦钻牛角尖。
Ⅸ c语言数组在函数中的传递
c语言中、数组在函数中的传递可以数组元素的传递!还有就是数组名的传递!其实、数组名的传递类似指针!就是把数组的元素的首地址传到形参的!
Ⅹ 在C语言中,数组作为参数,是怎样在函数之间传递的啊
数组作为参数是按地址传递的
数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。