以下是我的摘录:
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
Run Code Online (Sandbox Code Playgroud)
但是,如何打印出值quality?
但是,如何打印质量值?
你做
printf("%p", (void*) dataIndPtr->quality);
Run Code Online (Sandbox Code Playgroud)
由于指针的值是指针指向的对象的地址,因此将打印地址。
在这种情况下,要打印指针指向的对象,可以使用C99可用的格式说明符(也需要包含inttypes.h)。当然,您还需要取消引用指针:
printf("%" PRIu8 "\n", *(dataIndPtr->quality));
Run Code Online (Sandbox Code Playgroud)
因为quality是指向uint8_t或
printf("%" PRIu16 "\n", *(dataIndPtr->srcEndpt));
Run Code Online (Sandbox Code Playgroud)
用于uint16_t类型。
quality是一个指针,或者像一个数组,如果你想打印指向的值,你需要指定它。使用索引或取消引用它:
printf("quality: %d", *(dataIndPtr->quality));
Run Code Online (Sandbox Code Playgroud)
使用零索引(就像它是一个数组一样)也应该打印该值:
printf("quality: %d", dataIndPtr->quality[0]);
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要打印指针本身的值,那么 Michal 的答案就是您想要的。