小编Byr*_*ron的帖子

内存分配:为什么这个C程序有效?

可能重复:
返回本地或临时变量的地址

add函数执行错误.它应该返回一个值而不是一个指针.当打印ans和*ans_ptr并且程序甚至给出正确的结果时,为什么没有任何错误?我猜z的变量已经超出范围,应该存在分段错误.

#include <stdio.h>

int * add(int x, int y) {
    int z = x + y;
    int *ans_ptr = &z;
    return ans_ptr;
}

int main() {
    int ans = *(add(1, 2));
    int *ans_ptr = add(1, 2);

    printf("%d\n", *ans_ptr);
    printf("%d\n", ans);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c memory

3
推荐指数
1
解决办法
991
查看次数

标签 统计

c ×1

memory ×1