C语言函数的问题,在线等

walllacecn 2009-04-07 09:20:26
在一个函数中要实现给某个数组赋值,然后将数组返回,代码如下:

int i;
int cs;
int a[];//将这个空数组在下面的函数中赋值然后返回.不知道怎么回事,由于开发环境,编译器是单片机厂家提供的,就是不能单独赋值,就是a[i]= 0x11这样的,但是在函数中又可以.

int mc(int a,int b,int arr_a[]) {
arr_a[0] = a+0x11;
arr_a[1] = b+0x12;
...
return 1;

}

然后在程序中调用

mc(0x12,0x11)//将a[2]这个数组返回.
for (i = 0;i<sizeof(a);i++) {
sprintf(cs,"=%x",a[]);//结果显示的都是0
}



帮我看看怎么解决?
...全文
135 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocha 2009-04-07
  • 打赏
  • 举报
回复
再问个问题,如果加起来的和超过FF,就是3FC这样的 ,如何只保留FC去掉前面的3?

a = 0x3FC;
a &= 0xFF; // 得到 a = 0xFC
jack_wq 2009-04-07
  • 打赏
  • 举报
回复
还是没有看明白究竟在问啥?
rjianfeili 2009-04-07
  • 打赏
  • 举报
回复
额.
.
...
walllacecn 2009-04-07
  • 打赏
  • 举报
回复
谢谢大家了,解决了,如楼上所说直接操作即可,但是在for循环之前还是要调用函数MC的对了再问个问题,如果加起来的和超过FF,就是3FC这样的 ,如何只保留FC去掉前面的3?
supkychen 2009-04-07
  • 打赏
  • 举报
回复
直接进行类型转换啊.
如BYTE A = (BYTE)(X+Y)应该可以的啊
  • 打赏
  • 举报
回复
int mc(int a,int b,int arr_a[]) {    //a[]是全局变量,就不需要在型参里声明了,去掉,int arr_a[]
arr_a[0] = a+0x11;
arr_a[1] = b+0x12;
...
return 1;

}

然后在程序中调用

mc(0x12,0x11)//将a[2]这个数组返回.     //全局变量在函数里直接被操作,也不需要返回啊,就上面那一步就可以了
for (i = 0;i<sizeof(a);i++) {
sprintf(cs,"=%x",a[]);//结果显示的都是0
}

walllacecn 2009-04-07
  • 打赏
  • 举报
回复
手发抖写掉了一个呵呵,C语言函数的返回值可以是数组吗?我不是很了解..应当用指针可以吧..
我把a[2] = {0x12,0x15} 给了初值,长度应当没问题了.
然后在printf的时候还是0x12,0x15,也就是函数没有将数组的值改变
jame2001 2009-04-07
  • 打赏
  • 举报
回复
您的要求還是看不懂....
int a[]; 宣告成 int * a; 比較妥當吧...
walllacecn 2009-04-07
  • 打赏
  • 举报
回复
可以啊
目的就是像DELPHI里面的produce 一样,直接对全局变量(也就是那个数组a[])操作,我也是赶鸭子上架接手做嵌入式的,大家帮帮我,谢谢了.
yyyapple 2009-04-07
  • 打赏
  • 举报
回复
int a[];// 需要指定大小
sizeof(a); // sizeof(a)/sizeof(a[0])
ouzhf 2009-04-07
  • 打赏
  • 举报
回复

mc(0x12,0x11)//将a[2]这个数组返回

这个语句调用好像有错误吧!实参不够,是不是得将数组a传递给函数mc呢。
ouzhf 2009-04-07
  • 打赏
  • 举报
回复
楼主,数组a没声明其大小编译也能通过吗?

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧