回答編集履歴

3

追記

2017/11/12 06:27

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -19,3 +19,51 @@
19
19
  これに関しては完全に勘違いしていると思います。
20
20
 
21
21
  `%d`などのフォーマット指定子は出力形式に対応しているので、変数名に合わせる必要はないです。
22
+
23
+
24
+
25
+ エラーの再現
26
+
27
+ ---
28
+
29
+ ```C
30
+
31
+ int main(void) {
32
+
33
+ int a; double a;
34
+
35
+ return 0;
36
+
37
+ }
38
+
39
+ ```
40
+
41
+
42
+
43
+ ```
44
+
45
+ >gcc c.c -Wall
46
+
47
+ c.c: In function 'main':
48
+
49
+ c.c:2:19: error: conflicting types for 'a'
50
+
51
+ int a; double a;
52
+
53
+ ^
54
+
55
+ c.c:2:9: note: previous declaration of 'a' was here
56
+
57
+ int a; double a;
58
+
59
+ ^
60
+
61
+ c.c:2:19: warning: unused variable 'a' [-Wunused-variable]
62
+
63
+ int a; double a;
64
+
65
+ ```
66
+
67
+
68
+
69
+ 別にポインタに限った話ではないということがわかるかと思います。

2

追記

2017/11/12 06:27

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -9,3 +9,13 @@
9
9
 
10
10
 
11
11
  『pについて型の競合が発生しています』⇒『なんかpの型が違うんだけどなんで?』
12
+
13
+
14
+
15
+ > printf("addressofp=%a\n", a);
16
+
17
+
18
+
19
+ これに関しては完全に勘違いしていると思います。
20
+
21
+ `%d`などのフォーマット指定子は出力形式に対応しているので、変数名に合わせる必要はないです。

1

追記

2017/11/06 03:50

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,3 +1,11 @@
1
1
  同じプログラム内で同名の変数を使っているからです。
2
2
 
3
3
  `int*p`の変数名は`*p`ではありません。`p`です。
4
+
5
+
6
+
7
+ > error: conflicting types for ‘p’
8
+
9
+
10
+
11
+ 『pについて型の競合が発生しています』⇒『なんかpの型が違うんだけどなんで?』