回答編集履歴
3
追記
    
        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
追記
    
        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
追記
    
        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の型が違うんだけどなんで?』
         
     |