可能性の重複:
Correct format specifier to print pointer (address)?printf関数とポインタ
printf
を使ってポインタを印刷する場合、それはvoid *
へのポインタをキャストする必要のですか?言い換えれば、
#include <stdio.h>
int main() {
int a;
printf("address of a = %p\n", &a);
}
のようなコードでは、引数は実際には(void *) &a
であるべきですか? gcc
明示的なキャストが行われていないときに警告を出すようには思われません。
なぜprintfに何かを受け付け、%pで指定されたデータを取得するパラメータを指定すると警告が出ます。 – TigOldBitties
'printf'は型保証されていません - どうしてその変数がジャミードジャーを与えるべきなのでしょうか?それはあなた次第です。 OOPに歓迎。 –
@TigOldBitties:gccは 'printf'形式の文字列に基づいて静的解析を行うためです。 –