C语言函数值传递问题

C语言函数间值传递问题

 

错误示例

复制代码
#include <stdio.h>
int * pop() {
    int a[3]; // 定义的局部变量a[3]在调用完之后自动释放其空间
    int i = 0;
    for(; i < 3; i++) {
        a[i] = i;
    }
    return a; // 返回的是地址, 而不是数组a[3]本身,此时a在内存中已经被释放
}

void main() {
    int b[3];
    b = pop();
}
复制代码

 

正确示例

复制代码
#include <stdio.h>

/**
 * @Param a[] 指向数组的地址
 * @Param n 数组长度
 * 
 * 无需 return,只需通过传入的地址就可改变对应源数据
*/
void pop(int a[], int n) {
    int i;
    for(i = 0; i < n; i++) {
        a[i] = i;
   } } void main() {
int b[3]; pop(b, 3); printf("%d\n", b[2]); }
复制代码

 

posted @   散人长情  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示