嵌入式-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