嵌入式-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 @   WellMandala  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示