c语言中的传值,C语言传值

发布时间:2023-01-08

本文目录一览:

1、c语言值传递
2、c语言中的值传递是怎么回事?
3、在c语言编程中,传值方式和传引用方式之间有什么区别?
4、c语言的传值与传指针的问题

c语言值传递

main函数中输出sizeof(a)结果是数组a的大小,所以结果为6; 而在函数MatchingBrackets中,你把数组a的地址传递给了形参b,此时的形参是一个指针变量,所以你用sizeof(b)测的是你所使用的环境中指针变量所占的内存空间大小,而不是测数组a的大小。因此结果为4。

c语言中的值传递是怎么回事?

实参的值传给了形参,形参可以看着是被调函数中的局部变量。被调函数可以有返回值也可以没有,有返回值用return返回。 例如:

int fun(int a, int b) {
    int c;
    c = a + b;
    return c;
}

主函数调用:

int a, b, c;
a = 1, b = 2;
c = fun(a, b);

没有返回值的函数通常形参都是指针变量,那样可以直接改变变量的值,例如:

fun(int *a) {
    *a = 5;
}

主函数调用:

int b = 1;
fun(&b);

这里调用fun后,b的值就变为5了。而如果你的函数是fun(int a)这样,b的值是不会变化的,这需要你去理解指针。

在c语言编程中,传值方式和传引用方式之间有什么区别?

在C语言中,并没有引用的概念,这个是C的概念。 在C的函数参数中,有两种形式:

  • TYPE &var的形式,称为传引用方式;
  • TYPE var的形式,称为传值。 二者的区别为:
  1. 传引用时,形参和实参是同一个变量,即使用相同的内存空间,二者有相同的地址。而传值时二者地址不同;
  2. 传引用时,由于没有新建变量,所以对于类对象参数,不会产生构造和析构。而如果是传值调用,调用时会进行构造,退出函数时会进行析构;
  3. 由于传引用使用的是原本实参的地址,所以对引用参数值的修改,会在退出函数后体现在主调函数中,而传值调用对参数的修改不会影响到主调函数。

c语言的传值与传指针的问题

C语言中指针即地址,地址的传值可以引起参数的变化。 比如: x, y是取这两个变量的地址,作用空间在main函数里。然后函数调用把这两个变量的地址传递到函数myadd中,在函数中的*a*b分别是引用地址指向的变量值,等于是取到了x, y本身的值。在myadd中直接操作*a可以改变x的值。 通俗来说因为&x, &y表示的是x, y的地址。所以传递的是地址。意思就是说,函数可以通过地址引用变量。