【C语言】数组的传递

发布时间 2024-01-06 22:46:00作者: hzyuan

一维数组的传递,数组长度无法传递给子函数。

#include <stdio.h>

void print(int b[], int len){
    for(int i=0; i<len; i++){
        printf("%-3d", b[i]);
    }
    b[4]=20;
    printf("\n");
}

int main() {
    int a[5]={1,2,3,4,5};
    print(a, 5);
    printf("a[4]=%d\n", a[4]);
    return 0;
}

进行 debug,可以看到进入 print 函数后,sizeof(b) 是8字节,而不是20字节。

这是因为实际数组名中存储的是数组的首地址,一维数组在传递时是将数组的首地址传递给形参 b(其实变量 b 是指针类型)。故要通过 len 来传递数组中的元素个数。