美文网首页C语言
C语言函数参数的传值和传址调用

C语言函数参数的传值和传址调用

作者: greedyhao | 来源:发表于2017-11-14 09:08 被阅读0次

欢迎关注我的博客Zhuhao's Blog获取最新文章

大家都知道,c语言一般的参数都是传值调用的,但有时候也有例外,下面就分析一下什么时候传值调用,什么时候传址调用。

传值调用

标量参数都是传值调用,不会对标量产生任何影响

#include <stdio.h>

void add_one(int value) {
    value += 1;
}

int main(int argc, char const *argv[]) {
    int value = 10;

    printf("传值前value=%d\n", value);
    add_one(value);
    printf("传值后value=%d\n", value);

    return 0;
}

运行结果:

传值前value=10
传值后value=10

Process returned 0 (0x0)   execution time : 0.110 s
Press any key to continue.

传址调用

数组和指针参数是传址调用,相当于传递了一个包含参数地址的指针,在函数中对数组或指针的任何操作会间接的改变数组和指针的本身

#include <stdio.h>
#define  SIZE   4

void clr_nums(int nums[], int size) {
    int i;

    for (i = 0; i < size; i++) {
        nums[i] = 0;
    }
}

void clr_string(int *string) {
    *string = "      ";
}

int main(int argc, char const *argv[]) {
    int nums[] = {1,2,3,4};
    int *string = "Hello";
    int i;

    printf("传址前\n");
    printf("nums= ");
    for (i = 0; i < SIZE; i++) {
        printf("%d ", nums[i]);
    }
    printf("string=%s\n", string);

    clr_nums(nums, SIZE);
    clr_string(&string);

    printf("传址后\n");
    printf("nums= ");
    for (i = 0; i < SIZE; i++) {
        printf("%d ", nums[i]);
    }
    printf("string=%s\n", string);

    return 0;
}

运行结果:

传址前
nums= 1 2 3 4 string=Hello
传址后
nums= 0 0 0 0 string=

Process returned 0 (0x0)   execution time : 0.111 s
Press any key to continue.

相关文章

  • [转]正确理解C/C++中的传值调用/传址调用/引用调用

    首先说明,函数的传值调用和传址调用在C和C++中都是合法的语法,但是引用调用就只是在C++中合法的。 传值调用##...

  • C语言函数参数的传值和传址调用

    欢迎关注我的博客Zhuhao's Blog获取最新文章 大家都知道,c语言一般的参数都是传值调用的,但有时候也有例...

  • C语言

    函数 传值调用 传址调用 区别? 函数内部想求参数的个数是不可能的 函数的嵌套调用 函数的链式访问:把一个函数的返...

  • python

    python传值Python 函数参数引用(传值/传址)/copy/deepcopy - ZH奶酪 - 博客园 p...

  • Python 函数中,参数是传值,还是传引用?

    Python 函数中,参数是传值,还是传引用? 代码示例 在 C/C++ 中,传值和传引用是函数参数传递的两种方式...

  • java中的参数传递(只有值传递没有引用传递)

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原...

  • 解决java中的参数传递问题

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原...

  • Python函数参数

    参数类型 必选参数:在给函数传参数时,按照顺序,依次传值。 默认参数:就是在写函数的时候直接给参数传默认的值,调用...

  • 传值与传址

    一、传值与传址的定义 1、传值:一般,函数调用过程中的参数传递的就是实参的值,就是把实参传递给形参。 对形参的修改...

  • C++函数

    函数参数有默认值,调用的时候可以传值,可以不传值 可变参数,循环读取 构造函数,析构函数,拷贝构造函数 构造函数 ...

网友评论

    本文标题:C语言函数参数的传值和传址调用

    本文链接:https://www.haomeiwen.com/subject/wklxvxtx.html