×
嵌入式 > 技术百科 > 详情

关于数组做函数参数

发布时间:2020-10-23 发布时间:
|
在c语言中函数的参数可以是数组
u8 num[10];
void f(u8 a[])

    a[0] = 1;
    a[1] = 2;
} 
其实数组就是地址,每1个数组,就是一个地址。所以说,函数参数为指针的时候,也可以将实参放数组。
void f(u8 *p)
{
    *(p + 0)  = 1;
    *(p + 1)  = 2;

其实这个样子也可以,因为p是地址,*p是取地址中的内容,所以(P+1)则是将地址p位移到下一个地址,再去取内容,所以要加括号,如果不家括号的话,编译器就会报错。
还有函数体中,最好不要出现“ *P = 10;”  最好的方式是“*(P+0)= 10; ”。
调用的话就是这个样子
f(num);
放入函数的参数,其实就是数组的首地址
如果想把数组的第二个值为参数的话,可以是这个样子
f(num + 1);
或者
f(&num[1]);
这样就可以将数组的第二个数据的地址变成首地址,放入函数当实参
其实我觉得第二种比较不错,因为num+1的话,是先取num的地址,然后在加1,这样的话,cpu就需要有两次的运算,取地址,地址自加
若采用第二种
则在编译时候,应该直接就取得了数组的第二个地址,这样的话,可以省去一条运算。
 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
物联传感与Atmel强强联手 达成智能家居战略合作协议