vanity_chang 发表于 2020-2-20 12:51:07

为什么函数里的变量地址不会变

每次调用时,里面的变量地址是不变的!!

void main(){
        int geti();
        geti(1);
        geti(2);
        geti(3);
        geti(4);
        geti(5);
        geti(6);
}

int geti(int a){
        int i = a;
        printf("%d\n", &i);
        return i;
}

输出结果都是一样的,怎么办啊

qiuyouzhi 发表于 2020-2-20 12:57:31

???
输出结果一样咋了啊

vanity_chang 发表于 2020-2-20 13:36:34

qiuyouzhi 发表于 2020-2-20 12:57
???
输出结果一样咋了啊

因为函数调用时栈存储,调用完成后不是会删除所有的局部变量和函数地址么。地址应该会变的啊

良弓无箭 发表于 2020-2-20 13:40:20

输出结果当然一样了,当你定义一个函数时,系统会给这个函数一块内存空间。就是你得出的那个地址。
你每次调用完函数,内存空间都会释放,释放之后再用这块内存空间接收你后来传入的值。所以你得出的地址当然是一样的。
页: [1]
查看完整版本: 为什么函数里的变量地址不会变