关于数组做函数参数

在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就需要有两次的运算,取地址,地址自加,

若采用第二种,

则在编译时候,应该直接就取得了数组的第二个地址,这样的话,可以省去一条运算。

永不止步步 发表于12-03 11:20 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:345377个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号