指向结构的指针的格式说明符

pra*_*ary -2 c printf format-specifiers

#include<stdio.h>
#include<stdlib.h>

struct Graph
{
     int v;
};

int main()
{
    struct Graph* graph = (struct Graph*) malloc(sizeof(struct Graph));
    graph -> v = 1;
    printf("%u", graph);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是我收到有关该行格式的警告:

printf("%u", graph);
Run Code Online (Sandbox Code Playgroud)

警告是:

/home/praveen/Dropbox/algo/c_codes/r_2e/main.c | 14 |警告:格式'%u'期望参数类型为'unsigned int',但是参数2的类型类型为'struct Graph *'[-Wformat =] |

我应该为类型使用什么格式说明符struct Graph *

Sou*_*osh 5

C标准仅为预定义类型指定格式说明符。扩展的MACRO可以打印固定宽度的整数,但是没有用于整个用户定义/聚合类型的格式说明符。

您没有用于数组,结构等的格式说明符。您必须采用单个元素/成员并根据其类型进行打印。您需要了解要打印的数据(类型)是什么,并使用适当的格式说明符。

您可以打印V类型为的成员int。所以你可以做类似的事情

 printf("%d", graph->V);
Run Code Online (Sandbox Code Playgroud)

或者,如果您要打印返回malloc()并存储在中的指针graph,则可以执行

  printf("%p", (void *)graph);
Run Code Online (Sandbox Code Playgroud)

最后,请参见有关为何不将malloc()和的返回值转换为C的讨论。