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