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 @ 2022-03-29 15:23  散人长情  阅读(23)  评论(0编辑  收藏  举报