请教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),请问应该怎么定义合适的指针变量指向结构数组? 展开
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),请问应该怎么定义合适的指针变量指向结构数组? 展开
2个回答
展开全部
你是要对于整体的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;这样使用。
以上
展开全部
void function( StructType_Byte *p ) //参数类型要与实参类型相一致才可以!
{
*p++;
}
{
*p++;
}
追问
先谢谢,提问之前我查过网页,推出跟你上面的写法去定义函数里的参数指针,但在keil c里实际试过,还是一样的有警告,而且实际程序也没有正确读写数组内容,试的没招了,才来提问的。
追答
StructType_Byte abc[8]; 这里定义的变量abc类型就是StructType_Byte,因abc是数组,在C语言中,数组名就是数组首地址,所以,当以数组为参数时,就是传递相应类型的数据指针。
我没有keil c开发环境,无法帮你测试。但从语法上讲,只能是这样写了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询