嵌入式-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
4556
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具