189 8069 5689

c语言整形数组做函数参数 c语言数组定义

C语言数组变量作为函数参数

将数组传递给函数后,数组就会退化为指针

创新新互联,凭借十载的成都网站建设、成都网站制作经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有上千多家案例。做网站建设,选创新互联

void fun(int x, int pp[], int *n)

void fun(int x, int *pp, int *n)

// 这两种写法是等价的

pp[j++]=j; // 这句写错了

// 要保存到pp里的是能整除的整数,而不是计数器j,如果这么写,那么pp的值肯定是{0,1,2,3,4,5,...}

// 应该改成

pp[j++] = l; // L才是被整除的整数,要保存的是这个

*n=j; // n作为一个指针,负责传出得到的数字的数量,j是计数器,当所有的计算完毕后,j的值自然是这些数字的数量

c语言怎么将数组作为函数参数传入?

一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参

数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组

修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。

#includestdio.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语言中,数组做函数参数如何才能按值传递?

传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。

void func(int array[10])

void func(int array[])

void func(int *array)

所以以上三种函数声明完全等同。

实际情况是,数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。

下一个问题是:为什么偏要按值传递呢?当要在一个函数内使用一个数组时,传一个指针进去不就行了?只要能访问到我们所要的数据并对其进行操作,何苦钻牛角尖。

在C语言中,数组作为参数,是怎样在函数之间传递的啊??

数组作为参数是按地址传递的

数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。

在c语言中怎么将数组直接作为函数的参数 比如 int f(int a[10]) 在调用函数时会显示

要把数组作为函数的参数,在函数定义的时候,就要在参数列表设置指针,因为数组名就是数组的头指针,在调用时直接把数组名作为函数的参数就好了

比如

int fun(int *a)

{

//...

}

int main()

{

int a[10];

int result=fun(a);

return 0;

}

这样就好了

通常为了在函数中确保访问数组不越界,在参数列表还要假如数组的长度,方便函数访问数组

如下:

int fun(int *a,int length)

{

int i,sum=0;

for(i=0;ilength;i++)

{

//...对数组的每个元素进行访问

sum+=a[i];//把全部元素加起来

}

return sum;

}

int main()

{

int i,a[10];

for(i=0;i10;i++)

scanf("%d",a[i]);

int result=fun(a,10);

printf("总和为:%d\n",result);

return 0;

}

c语言 数组作为函数参数怎样写

如果一个函数的目的是要产生一个新的数组,那么最好的做法是在调用函数前就生成好这个数组,然后把这个数组作为参数传给函数,在函数中修改这个数组的值.

像你这种做法,在sum函数结束后,sth3数组就作为局部变量被释放了.而且在main中,sum数组声明以后,sum就是一个常量了,又怎么能放在=左边呢.

另外,sum函数的算法也错了.

正确代码如下:

void Sum(int sth1[][3],int sth2[][3],int sth3[][3])

{

int i = 0;

int j =0;

do

{

sth3[i][j]=sth1[i][j]+sth2[i][j];

j++;

if(j==3)

}while(i3);

}

int main(void)

{

int matrix1[3][3]={

,

,

};

int matrix2[3][3]={

,

,

,

};

int sum[3][3];

Sum(matrix1,matrix2,sum);

Display(sum);

return 0;

}

如果还没解决你的问题,可以加我百度HI账号。


文章题目:c语言整形数组做函数参数 c语言数组定义
文章URL:http://cdxtjz.com/article/docigho.html

其他资讯