質問するログイン新規登録

回答編集履歴

3

追記

2017/11/12 06:27

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -8,4 +8,28 @@
8
8
  > printf("addressofp=%a\n", a);
9
9
 
10
10
  これに関しては完全に勘違いしていると思います。
11
- `%d`などのフォーマット指定子は出力形式に対応しているので、変数名に合わせる必要はないです。
11
+ `%d`などのフォーマット指定子は出力形式に対応しているので、変数名に合わせる必要はないです。
12
+
13
+ エラーの再現
14
+ ---
15
+ ```C
16
+ int main(void) {
17
+ int a; double a;
18
+ return 0;
19
+ }
20
+ ```
21
+
22
+ ```
23
+ >gcc c.c -Wall
24
+ c.c: In function 'main':
25
+ c.c:2:19: error: conflicting types for 'a'
26
+ int a; double a;
27
+ ^
28
+ c.c:2:9: note: previous declaration of 'a' was here
29
+ int a; double a;
30
+ ^
31
+ c.c:2:19: warning: unused variable 'a' [-Wunused-variable]
32
+ int a; double a;
33
+ ```
34
+
35
+ 別にポインタに限った話ではないということがわかるかと思います。

2

追記

2017/11/12 06:27

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -3,4 +3,9 @@
3
3
 
4
4
  > error: conflicting types for ‘p’
5
5
 
6
- 『pについて型の競合が発生しています』⇒『なんかpの型が違うんだけどなんで?』
6
+ 『pについて型の競合が発生しています』⇒『なんかpの型が違うんだけどなんで?』
7
+
8
+ > printf("addressofp=%a\n", a);
9
+
10
+ これに関しては完全に勘違いしていると思います。
11
+ `%d`などのフォーマット指定子は出力形式に対応しているので、変数名に合わせる必要はないです。

1

追記

2017/11/06 03:50

投稿

LouiS0616
LouiS0616

スコア35678

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