将int转换为char*
下面的结构定义是在我的一个头文件中定义的将int转换为char*,c,structure,typecasting-operator,C,Structure,Typecasting Operator,下面的结构定义是在我的一个头文件中定义的 typedef struct REMDEV_ADDR { UINT8 addr[DEVICE_ADDR_SIZE]; } RemDev_Addr; typedef RemDev_Addr BTDEV_ADDR; 现在我有以下我想使用的函数 hci_acl_connect(UCHAR * bd_addr,UINT16 * handle); 因此,我在我的c文件中创建了上述结构的全局实例 BTDEV_ADDR hsu_addr 像这样调
typedef struct REMDEV_ADDR {
UINT8 addr[DEVICE_ADDR_SIZE];
} RemDev_Addr;
typedef RemDev_Addr BTDEV_ADDR;
现在我有以下我想使用的函数
hci_acl_connect(UCHAR * bd_addr,UINT16 * handle);
因此,我在我的c文件中创建了上述结构的全局实例
BTDEV_ADDR hsu_addr
像这样调用函数
hci_acl_connect((unsigned char *)&hsu_addr,&cont_hand);
“类型转换是否正确”(unsigned char*)&hsu_addr“?假设您希望函数对结构中的数组
addr
执行某些操作,则无需进行转换。只需传递addr
成员:
hci_acl_connect(hsu_addr.addr, &cont_hand);
假设
UINT8
和UCHAR
都是无符号字符的别名(这似乎是一个安全的假设)。假设您希望函数对结构中的数组addr
执行某些操作,则不需要强制转换。只需传递addr
成员:
hci_acl_connect(hsu_addr.addr, &cont_hand);
这是假设UINT8
和UCHAR
都是无符号字符的别名(这似乎是一个安全的假设)。从任何其他指针类型转换到字符*
或无符号字符*
是安全的,因为字符
具有最严格的对齐要求,即,它可以位于任何地址。它也不会打破严格的别名规则
然而,相反的是未定义的行为。较大的类型通常具有更严格的对齐要求,这可能会导致尝试在未对齐的地址进行操作。新指针也可能会别名旧指针,这可能会在进行优化时误导编译器。从任何其他指针类型转换为char*
或无符号char*
是安全的,因为char
具有最严格的对齐要求,也就是说,它可以位于任何地址。它也不会破坏严格的别名规则
然而,相反的是未定义的行为。较大的类型通常具有更严格的对齐要求,这可能会导致尝试在未对齐的地址进行操作。新的指针也可能是旧指针的别名,这可能会在进行优化时误导编译器。当然可以。您的变量驻留在堆栈上,但您需要提供一个指针,所以您可以使用和\u var
。您需要一个指向UCHAR
的指针,因此可以强制转换:(UCHAR*)&your\u var
演员阵容本身还可以,但我们不知道UCHAR*bd_addr
应该代表什么。也许你应该通过你的变量addr
来代替?当然可以。您的变量驻留在堆栈上,但您需要提供一个指针,所以您可以使用和\u var
。您需要一个指向UCHAR
的指针,因此可以强制转换:(UCHAR*)&your\u var
演员阵容本身还可以,但我们不知道UCHAR*bd_addr
应该代表什么。也许你应该通过你的变量addr
来代替它?如果UCHAR
与编译器+平台上的UINT8
类型相同,那么试着用hsu addr.addr
替换(无符号字符*)&hsu addr
。如果UCHAR
与编译器+平台上的UINT8
类型相同,则尝试将(unsigned char*)&hsu addr
替换为hsu addr.addr
。否则会发布更多的context.but hci\u acl\u connect(UCHAR*bd\u addr,UINT16*handle);它的第一个参数需要一个字符pointer@Abhinav,您可能应该刷新页面以查看对此的最新编辑answer@Abhinav除非系统上的short
为8位,否则无符号字符似乎是定义UINT8
和UCHAR
的唯一合理方法,这意味着这两种类型是相同的。但是hci_acl_connect(UCHAR*bd_addr,UINT16*handle);它的第一个参数需要一个字符pointer@Abhinav,您可能应该刷新页面以查看对此的最新编辑answer@Abhinav除非系统上的short
为8位,否则无符号字符似乎是定义UINT8
和UCHAR
的唯一合理方法,这意味着两种类型是相同的。