聊一聊C语言的参数传递

123 阅读1分钟

本讲我们和大家一起来聊一聊C语言中有关参数传递的一些知识。

1. 问题引入

请写出以下程序的打印结果。

#include <stdio.h>

// 将某整数加10

void add_by_10(int  a){

            a = a + 10;

}

int main(int argc, char *argv[]){

            int a = 2;

            add_by_10(a);

            printf("a= %d\n", a);

}

上面的程序非常的简单,我们定义了一个函数add_by_10,它的功能是实现整数加10,然后在main函数中调用,由于a初始值为2,当调用函数了以后,a的值变成了12。

事实真是如此吗?如果你编译执行了这段程序,你会发现打印的结果是:"a  =  2".

为什么会这样呢?这和你想的完全不一样。

2. 问题分析

接下来我们就和大家一起来分析为什么会是这样的结果。

之前的文章我们讲过,所谓变量的定义其实就是从4G的内存条上去拿空间,如你定义了一个i