前提・実現したいこと
ポインタ変数を初期化しないでprintf()でアドレスを表示させると(nil)になりますが、初期化していないポインタ変数を3つ宣言し、それぞれのアドレスをprintf()で表示させると最初の2つはアドレスが表示されますが、最後のアドレスは表示されませんでした。ポインタ変数にアドレスを入れていないのにアドレスが代入されていました。
どのような仕組みになっているのでしょうか?
発生している問題・エラーメッセージ
warningメッセージです。
test10.c:7:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
7 | main()
| ^~~~
test10.c: In function ‘main’:
test10.c:12:2: warning: ‘s’ is used uninitialized in this function [-Wuninitialized]
12 | printf("%p\n", s);
| ^~~~~~~~~~~~~~~~~
test10.c:13:2: warning: ‘j’ is used uninitialized in this function [-Wuninitialized]
13 | printf("%p\n", j);
| ^~~~~~~~~~~~~~~~~
test10.c:14:2: warning: ‘i’ is used uninitialized in this function [-Wuninitialized]
14 | printf("%p\n", i);;
該当のソースコード
#include <stdio.h>
#include <stdlib.h>
int i;
main()
{
char *s;
int *j;
int *i;
printf("%p\n", s);
printf("%p\n", j);
printf("%p\n", i);;
}
実行結果
0x7f0b04bbe060
0x7fffc893ea10
(nil)
補足情報(FW/ツールのバージョンなど)
Ubuntu でviエディタで編集し、gccでコンパイルしています。
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。