char *p; と書けば,「char *」型の変数pを宣言する
と説明することのデメリットの一つとして,「char* p, q;」と書いたとき,変数qは,ポインタ型ではなくchar型になる,ということが挙げられます.
これに対して,反論を試みてみますと
- 一括宣言でポインタ変数を作りたいが,「*」と書くのを減らしたい,というのであれば,「typedef char *charp; charp p, q;」と書けばいいでしょう.
- 配列の一括宣言で「int a[3], b[5];」と書くことができますが,このときのaはint [3]型,bはint [5]型と解釈されます.一つの宣言で宣言される複数の変数が,同一の型であることは,要請されていないわけです.だから,変数一つ一つに対して何型になるかをチェックしながら,使っていくべきです.