C语言中的函数赋值问题

Python07

C语言中的函数赋值问题,第1张

#include

<stdio.h>

f(int

a,int

b,int

m){

//这个函数是个完全没意思的函数

m=a*b

return

//原因在这

这里直接return了

没指明返回哪个变量

那它的意义就只是说f函数结束了

其实什么也没返回

}

void

main(){

int

m=1

//这里对m赋值1

f(2,3,m)

//运算是完全没意思的运算

所以最后结果是1

printf("%d",m)

}

为什么运行结果是m=1?????

//

在f函数那

return

m

就能得到你想要的

不过要把主函数里的倒数3行改成

m=f(2,3,m)

如果你非要用指针的话,可以把数组的形式改写成指针的形式,就像一楼的

void Chg_Array(int array[], int size, int value)

{

int i

for(i=0i<sizei++)

*(array+i)=value

}

不明白你的意思……是不是类似于这样 int hello(char a,int i = 4,int m = 9){} ?

这样在c语言中是不可以的,这是c++的概念,默认参数,使用方法如下:以上面的hello函数为例

hello(n) 默认i=4,m=9。 hello(n,5,23)这里在函数中i = 5,m = 23.

就是说,如果调用时给参数赋值了,就使用赋值的,如果没有,就使用默认的

需要标明一点,这种函数参数表有个规则,就是所有的默认参数都靠后,即:int hello(int a = 1,int b,int c=23){} 是错误的……而且,使用时,也不可以跳过一个默认值给后面的值赋值,如:

int hello(char a,int b= 12,char c = 'd')如果想参数b使用默认而给c赋值,那么必须是hello(a,12,c),如果跳过赋值b,即:hello(a,c)就是错的,很好理解,这样就把c赋值给参数b了,一定报错。