重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
两种方法.
从网站建设到定制行业解决方案,为提供网站设计制作、成都网站建设服务体系,各种行业企业客户提供网站建设解决方案,助力业务快速发展。成都创新互联将不断加快创新步伐,提供优质的建站服务。
一:
把a作为参数传递给sss();
int sss(int x)
{x ;
}这样仅仅只是使用a的值,是把a的值复制给x,使x的值等于a,可以在子函数中使用a的数值,但无法改变主函数中a的值.
二,
使用指针.声明一个指针指向a,把a的地址作为参数传递给子函数,那么在子函数中不但可以使用a的值还可以修改主函数中a的值.
变量有全局变量和局部变量之分,要想子函数改变母函数的变量值有两种办法:
1是将变量定义成全局变量(在#include下面就定义),然后在子函数中直接使用变量名。
2是将指向该变量的指针当作参数传递给子函数。
#includestdio.h
// 用于修改数组的函数
int change_array(int *num, int count)
{
int i,t;
for(i = 0; i count; i++)
{
t = num[i];
num[i] = t + 1;
}
}
int main()
{
int i, b[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// 调用函数
change_array(b, 10);
// 输出结果
for(i = 0; i 10; ++i)
{
printf("%d ", b[i]);
}
}
1、新建一个数组作为参数项目,如图所示:
2、添加一个array.c文件,如图所示:
3、包含stdio.h和stdlib.h头文件,如图所示:
4、输入main函数主体及返回值,如图所示:
5、定义一个数组arr,如图所示:
6、定义一个function函数,如图所示:
7、将数组作为参数传递给function函数,如图所示:
8、运行程序,输出结果,如图所示:
一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#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
对于有数组参数的函数,编译程序要为其开辟相应的内存空间,而程序中两个函数
都有数组参数a[n][m],由于n,m是变量,编译程序并不知道n,m的具体值,所以不能
通过编译。
修改:
1.在#include下面添加以下伪指令:
#define n 5
#define m 5
2.将函数的参数形式改为:
int sum(int a[n][m]);
void pl(int a[n][m]);
并按此修改程序文件中所有关于这两个函数的申明和调用即可