10進表記でポインタを印刷するにはどうすればよいですか?Printfポインタ(10進表記)
-Wall
でコンパイルすると、以下のいずれも望ましい結果になりません。私はエラーを理解し、-Wall
でコンパイルしたいと思います。しかし、どうすれば10進表記でポインタを印刷できますか?
#include <stdio.h>
#include <stdlib.h>
int main() {
int* ptr = malloc(sizeof(int));
printf("%p\n", ptr); // Hexadecimal notation
printf("%u\n", ptr); // -Wformat: %u expects unsigned int, has int *
printf("%u\n", (unsigned int) ptr); // -Wpointer-to-int-cast
return EXIT_SUCCESS;
}
(私はドットグラフのノード識別子としてポインタを使用していますので、これは必要とされ、そして0x..
は有効な識別子ではありません。)