重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这个问题你学到指针就明白了,
创新互联专注于企业营销型网站、网站重做改版、伍家岗网站定制设计、自适应品牌网站建设、H5页面制作、商城网站建设、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为伍家岗等各大城市提供网站开发制作服务。
swap()函数中int x,y;都是重新开辟的内存的,
只是取了main函数中a,b的值而已本身和a,b是没有任何关系的。
你交换只是交换了新内存中x,y的值,而这块新内存中的值会在,函数执行完毕后被系统收回。
所以对main函数不造成任何影响。除非用指针变量直接对内存进行操作。
形参就是形式参数,用一个变量代表大家。实参就是实际参数,用一个 确切的数值代替形式参数,可以是表达式。实际参数与形式参数的参数个数、类型和顺序都应一样,如果不一样的话,系统会强制转换,这样会造成数据的丢失。实 参向形参的传递是值的传递。
这个值就是对实参的表达式进行计算的结果,它可以是常量值、变量值、数组元素、函数值等。如果实参是数组名了,那么它传送的就是地址的值了。比如:
double power(double x ,int n)定义一个双精度参数
power(3.0,5) 调用
x n 是形参,3.0,5是实参。如果上面定义的是整形 double power(int x ,int n),下面调用的是power(3.3,5)那么实参中3.3会被转换成3,一部分数据丢失了。
形式参数就是定义函数时候的参数表,只是定义了调用时参数的个数、类型和用来引用的名字,并没有具体的内容。形参未被调用时,不占存储单元。形参只在调用过程中占用存储单元。
在调用函数时,给形参分配存储单元,实参可以是常量、变量或者表达式,且要与形参类型一致!而且实参要有确定的值,在调用过程中实参将值赋给形参,并将实际参数对应的数值传递给形式参数;
调用结束后,形参单元被释放,实参单元仍然保留
并且维持原值。所以说,实参是调用函数传递的具体数据。实参对形参数据传递时时单向传递。在存储单元中是不同的单元。
下面这段程序中
#includestdio.h
int
fun(int
a,int
b)
{a+=10;
b=a+b*2;
return
a+b;
}
void
main()
{
int
x=3,y=5,z;
z=fun(x,y);
printf("%d
%d
%d\n",x,y,z);
}
a和b都是形式参数,x和y都是实际参数。
程序从主函数开始运行,等到运行到z=fun(x,y)开始调用被调用函数,以被调用函数的形式进行运算,然后把计算的值返回后赋值给z,这样一个运算就算完成了。在调用过程中,形参a和b的值都发生了改变,但是在main函数中,x和y的值都未发生变化。所以说实参向形参的值的传递是单向的。
直接在main函数外部比如上边定义,这样两个数组就是全局变量,可以在任何地方使用,使用的是同一个。
另外,定义时数组大小不能是变量,只能是常量,你可以定义一个足够大的数组,比如 b[255],使用时只用其中的n个即可,在你的代码中,b[] c[] p[][] 和 n 都可以在 main 的外边定义,这样很多处理函数直接使用即可,不过处理之前,你的 n 一定要得到具体的值才能使用,否则会是随机值。
int rollDice(void)
括号里的void是说这个函数不需要参数。
前面的int是说这个函数返回的是一个int类型的值。
而worksum正是int类型的值。
当你定义一个函数的时候,
比如:
int
add(int
a,
int
b){...}
那
a
和
b
就是形式参数。
当你调用这个方法时,
比如:
int
n
=
100;
int
sum
=
add(n,
20);
那么
n
和
20
就是实际参数。