一趟走完,两边各剩下什么

👁️ 0 人浏览 💬 0 人评论 ❤️ 添加收藏

这趟走完,谁被收走,谁还留着

跟着走

留下来

(本条路线统一用 gcc -std=c11 -O0 编译)一个函数把值带回来,另一个把地址带回来:

#include <stdio.h>
#include <stdlib.h>

/* 栈上的那份:函数一返回就没了,所以只能把值带回来 */
int on_stack(void) {
    int x = 7;
    return x;
}

/* 堆上的那份:函数返回了它还在,所以能把地址带回来 */
int *on_heap(void) {
    int *p = malloc(sizeof(int));
    *p = 7;
    return p;
}

int main(void) {
    int a = on_stack();
    int *b = on_heap();
    printf("%d/%d/%d\n", a, *b, a == *b);
    free(b);
    return 0;
}
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论