La seguente dichiarazione in C:Sintassi del puntatore in C: perché * si applica solo alla prima variabile?
int* a, b;
dichiareremo a
come tipo int*
e b
come tipo int
. Sono ben consapevole di questa trappola, ma quello che voglio sapere è perché funziona in questo modo. Perché non dichiara anche int*
come , come la maggior parte delle persone si aspetterebbe intuitivamente? In altre parole, perché *
si applica al nome della variabile, piuttosto che al tipo?
Certo si potrebbe scrivere in questo modo di essere più coerente di come è in realtà opere:
int *a, b;
Tuttavia, io e tutti quelli che ho parlato a pensare in termini di una è di tipo " puntatore a int ", anziché a è un puntatore ad alcuni dati e il tipo di quei dati è" int ".
Questa è stata solo una pessima decisione dei progettisti di C o c'è qualche buona ragione per cui viene analizzata in questo modo? Sono certo che la domanda abbia avuto una risposta prima, ma non riesco a trovarla usando la ricerca.
A dire il vero, se il linguaggio C ha modificato il tipo con '*, allora avremmo chiesto a" perché non 'int * a, b;' mi dai un puntatore e un intero? ". – bta
@bta, sì, vorremmo - ma penso che avrebbe confuso meno persone. Ad ogni modo, il punto non è discutere la decisione che è stata presa 40 anni fa, è solo per capire se ci sono ragioni per le quali non sono a conoscenza. – EMP
Si potrebbe leggere questo http://c-faq.com/decl/charstarws.html – Amarghosh