专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

关于数组做函数参数

作者:huqin   来源:本站原创   点击数:  更新时间:2013年11月21日   【字体:

在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就需要有两次的运算,取地址,地址自加
若采用第二种
则在编译时候,应该直接就取得了数组的第二个地址,这样的话,可以省去一条运算。

关闭窗口

相关文章