微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 关于数组做函数参数

关于数组做函数参数

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top