求助!!!!c语言函数以指针形式调用数组如何实现?

[复制链接]
8912|3
 楼主| li543117 发表于 2008-8-20 16:05 | 显示全部楼层 |阅读模式
<br /><br />此处定义的数组,在下面供函数调用,编译总是出错,尝试了很多办法还是不行,希望高手能指点一下~~~~~如果要能正常调用该数组,该如何改正或者用其他办法如何实现?小弟不甚感激~~~~<br /><br />unsigned&nbsp;char&nbsp;Inputdata_1[251574]&nbsp;&nbsp;<br /><br />void&nbsp;Display(int&nbsp;addr)&nbsp;&nbsp;&nbsp;//此处改成过指针的形式,但是后面没改,编译依然无法通过<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;int_t&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;int_t&nbsp;&nbsp;a,b;<br />&nbsp;&nbsp;&nbsp;&nbsp;TempBuffer_img[j]&nbsp;=&nbsp;addr[i*960+j+54];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />}<br /><br />void&nbsp;mian()<br />{<br />Display(Inputdata_1)<br />}<br />&nbsp;<br />附:编译错误提示<br />&quot;main.c&quot;,&nbsp;line&nbsp;53:&nbsp;cc0142:&nbsp;&nbsp;error:&nbsp;expression&nbsp;must&nbsp;have&nbsp;pointer-to-object&nbsp;type<br />&nbsp;&nbsp;TempBuffer_img[j]&nbsp;=&nbsp;addr[i*960+j+54];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^<br />编译软件对此错误的解释:<br />Compiler&nbsp;Error:&nbsp;expression&nbsp;must&nbsp;have&nbsp;pointer-to-object&nbsp;type<br />Description<br />The&nbsp;expression&nbsp;used&nbsp;does&nbsp;not&nbsp;have&nbsp;a&nbsp;pointer-to-object&nbsp;type.&nbsp;<br />Severity<br />Fatal&nbsp;error<br />Recovery<br />The&nbsp;compiler&nbsp;cannot&nbsp;recover&nbsp;from&nbsp;this&nbsp;error.<br />Example<br />int&nbsp;a;<br />int&nbsp;main()<br />{<br />return&nbsp;a[1];&nbsp;/*&nbsp;Error&nbsp;occurs&nbsp;here&nbsp;*/<br />}<br />How&nbsp;to&nbsp;Fix<br />Ensure&nbsp;that&nbsp;the&nbsp;expression&nbsp;used&nbsp;has&nbsp;a&nbsp;pointer-to-object&nbsp;type.&nbsp;The&nbsp;lvalue&nbsp;must&nbsp;be&nbsp;for&nbsp;a&nbsp;scalar,&nbsp;and&nbsp;if&nbsp;it&nbsp;is&nbsp;a&nbsp;pointer,&nbsp;it&nbsp;must&nbsp;point&nbsp;to&nbsp;an&nbsp;object.<br />One&nbsp;of&nbsp;the&nbsp;operands&nbsp;must&nbsp;have&nbsp;a&nbsp;pointer-to-object&nbsp;type,&nbsp;and&nbsp;the&nbsp;other&nbsp;one&nbsp;must&nbsp;be&nbsp;an&nbsp;integral&nbsp;expression.&nbsp;You&nbsp;can&nbsp;make&nbsp;the&nbsp;above&nbsp;example&nbsp;compile&nbsp;by&nbsp;either&nbsp;changing&nbsp;the&nbsp;declaration&nbsp;&quot;int&nbsp;a;&quot;&nbsp;to&nbsp;&quot;int&nbsp;a[];&quot;&nbsp;or&nbsp;by&nbsp;changing&nbsp;the&nbsp;return&nbsp;statement&nbsp;to&nbsp;&quot;return&nbsp;a&quot;.<br />&nbsp;<br />&nbsp;
赤铸 发表于 2008-8-20 17:41 | 显示全部楼层

为什么非要用不同类型?

unsigned&nbsp;char&nbsp;Inputdata_1[251574];&nbsp;//&nbsp;楼主这里是不是少了个分号?<br />void&nbsp;Display(unsigned&nbsp;char&nbsp;*&nbsp;addr)&nbsp;//&nbsp;为什么非要写成&nbsp;int&nbsp;*&nbsp;?<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int_t&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;int_t&nbsp;&nbsp;a,b;<br />&nbsp;&nbsp;&nbsp;&nbsp;TempBuffer_img[j]&nbsp;=&nbsp;addr[i*960+j+54];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />void&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Display(Inputdata_1);&nbsp;//&nbsp;强制转换编译可以通过,但必需搞清楚到底需要什么类型!<br />}<br />
 楼主| li543117 发表于 2008-8-22 20:41 | 显示全部楼层

谢谢

感谢qinxg和赤铸的发言,受益匪浅~~~~
ruyueyini 发表于 2011-5-23 16:29 | 显示全部楼层
感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

52

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部