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 *?
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的讨论。
| 归档时间: |
|
| 查看次数: |
1416 次 |
| 最近记录: |