嵌入式-C语言基础:数组作为参数传递需要注意的问题

#include <stdio.h>

void printData(int data)
{
    printf("%d\n",data);
}

//形参中不存在数组的概念,即便中括号约定了数组的大小,也无效,传递的是一个地址,是数组的首地址
void printArr(int arry[], int len)
{
    int i;
    printf("printArr: arry的大小是:%d\n",sizeof(arry));//总是输出8,是因为在os用8个字节来表示一个地址
    for(i=0;i<len;i++){
        printf("%d ",arry[i]);
    }
    putchar('\n');
}
int main()
{
    int len;
    int arry[5] = {3,4,5,6,7};
    len = sizeof(arry)/sizeof(arry[0]);
    printf("main: arry的大小是:%d\n",sizeof(arry));
    printArr(&arry[0],len);//第一个元素的地址也是数组的首地址
    printArr(arry,len);//数组名代表整个数组的首地址
    return 0;
}

输出结果

main: arry的大小是:20
printArr: arry的大小是:8
3 4 5 6 7
printArr: arry的大小是:8
3 4 5 6 7

posted @ 2022-10-20 22:56  WellMandala  阅读(42)  评论(0)    收藏  举报