以下是我的摘要:
@saved_attachment = true
但是,如何打印出typedef struct{
uint8_t dstEndpt;
uint16_t srcEndpt;
uint8_t * quality;
} DataIndT;
DataIndT * dataIndPtr;
printf("dstEndpt: 0x%02x", dataIndPtr->dstEndpt); <-- print out the value of dstEndpt
printf("dstEndpt: 0x%04x", dataIndPtr->srcEndpt); <-- print out the value of srcEndpt
的价值?
答案 0 :(得分:4)
但是,如何打印出质量值?
你做
printf("%p", (void*) dataIndPtr->quality);
这将打印地址,因为指针的值是指向指向的对象的地址。
要打印指针指向的对象,在这种情况下,您可以使用C99可用的格式说明符(还需要包含inttypes.h
)。当然,您还需要取消引用指针:
printf("%" PRIu8 "\n", *(dataIndPtr->quality));
因为quality
是指向uint8_t
或
printf("%" PRIu16 "\n", *(dataIndPtr->srcEndpt));
代表uint16_t
类型。
答案 1 :(得分:3)
要打印指针的值,请使用%p
:
printf("dstEndpt: %p", (void*)dataIndPtr->quality);
答案 2 :(得分:2)
quality
是一个指针,或者像一个数组,如果你想打印指向你需要指定它的值。使用索引或取消引用它:
printf("quality: %d", *(dataIndPtr->quality));
使用零索引,如果它是一个数组,也应该打印值:
printf("quality: %d", dataIndPtr->quality[0]);
或者,如果您想要的是打印指针本身的值,那么Michal的回答就是您想要的。
答案 3 :(得分:1)
就像@Giorgi指出的那样,你可以使用 inttypes.h 。
这是一个小例子:
#include <inttypes.h>
#include<stdio.h>
int main(void){
uint8_t a = 0;
uint16_t b = 0;
uint32_t c = 0;
uint64_t d = 0;
printf("%" PRId8 "\n", a);
printf("%" PRIu16 "\n",b);
printf("%" PRIu32 "\n", c);
printf("%" PRIu64 "\n", d);
return 0;
}