请教keil c 里的结构数组怎么被函数参数带入其地址?

见如下代码:structBit_type{unsignedcharbit0:1;unsignedcharbit1:1;unsignedcharbit2:1;unsigne... 见如下代码:
struct Bit_type
{
unsigned char bit0:1 ;
unsigned char bit1:1 ;
unsigned char bit2:1 ;
unsigned char bit3:1 ;
unsigned char bit4:1 ;
unsigned char bit5:1 ;
unsigned char bit6:1 ;
unsigned char bit7:1 ;
};
typedef struct Bit_type StructType_Byte;

StructType_Byte abc[8];

void function( unsigned char *p )
{
*P++;
}

void main( void )
{
function(abc);
}
这里问题就来了,编译提示 函数function的参数里的指针指向了不同类型的指针(SOURCE\MAIN.C(42): warning C182: pointer to different objects),请问应该怎么定义合适的指针变量指向结构数组?
展开
 我来答
free逍遥星空
2015-10-28 · TA获得超过344个赞
知道小有建树答主
回答量:231
采纳率:100%
帮助的人:201万
展开全部

你是要对于整体的unsigned char型自增么?如果是的话可以使用这种结构,将其再包装一层,便于对于各个位或者整体进行查看:

struct Bit_type
{
union
{
 unsigned char bit;
 struct
 {
unsigned char bit0 : 1;
unsigned char bit1 : 1;
unsigned char bit2 : 1;
unsigned char bit3 : 1;
unsigned char bit4 : 1;
unsigned char bit5 : 1;
unsigned char bit6 : 1;
unsigned char bit7 : 1;
 };
};
};
然后,再把指针取StructType_Byte *型即可。
使用可以p[0].bit++;使用也可对p[0].bit0 = 1;这样使用。
以上
kaixingui2012
2015-10-28 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6195万
展开全部
void function( StructType_Byte *p ) //参数类型要与实参类型相一致才可以!
{
*p++;
}
追问
先谢谢,提问之前我查过网页,推出跟你上面的写法去定义函数里的参数指针,但在keil c里实际试过,还是一样的有警告,而且实际程序也没有正确读写数组内容,试的没招了,才来提问的。
追答
StructType_Byte abc[8];  这里定义的变量abc类型就是StructType_Byte,因abc是数组,在C语言中,数组名就是数组首地址,所以,当以数组为参数时,就是传递相应类型的数据指针。
我没有keil c开发环境,无法帮你测试。但从语法上讲,只能是这样写了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式