打印出值uint8_t *
以下是我的片段:
typedef struct{ uint8_t dstEndpt; uint16_t srcEndpt; uint8_t * quality; } DataIndT; DataIndT * dataIndPtr; printf("dstEndpt: 0x%02x", dataIndPtr->dstEndpt); srcEndpt); <-- print out the value of srcEndpt
但是,我怎样才能打印出quality
的价值?
如果要打印指向需要指定的值,则quality
是指针或类似数组。 使用索引或取消引用它:
printf("quality: %d", *(dataIndPtr->quality));
使用零索引,如果它是一个数组也应该打印值:
printf("quality: %d", dataIndPtr->quality[0]);
或者,如果你想要的是打印指针本身的值,那么Michal的答案就是你想要的。
要打印指针的值,请使用%p
:
printf("dstEndpt: %p", (void*)dataIndPtr->quality);
但是,我怎样才能打印出质量的价值?
你做
printf("%p", (void*) dataIndPtr->quality);
这将打印地址,因为指针的值是指针指向的对象的地址。
要打印指针指向的对象 ,在这种情况下,您可以使用C99可用的格式说明符(还需要包含inttypes.h
)。 当然你还需要取消引用指针:
printf("%" PRIu8 "\n", *(dataIndPtr->quality));
因为quality
是指向uint8_t
或
printf("%" PRIu16 "\n", *(dataIndPtr->srcEndpt));
对于uint16_t
类型。
就像@Giorgi指出的那样你可以使用inttypes.h 。
这是一个小例子:
#include #include 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; }