Sólo x
es un puntero a int; y
y z
son entradas regulares.
Este es un aspecto de la sintaxis de la declaración C que hace saltar a algunas personas. C utiliza el concepto de declarator, que introduce el nombre de la cosa que se declara junto con información de tipo adicional no proporcionada por el especificador de tipo. En la declaración
int* x, y, z;
los declaradores son *x
, y
y z
(que es un accidente de la sintaxis de C que se puede escribir ya sea int* x
o int *x
, y esta cuestión es una de las varias razones por las que recomiendo usar el segundo estilo) El int-dad de x
, y
, y z
es especificado por el especificador de tipo int
, mientras el puntero-dad de x
se especifica por el declarador *x
(OIA, la expresión *x
tiene tipo int
).
Si desea que los tres objetos sean punteros, tiene dos opciones. Se puede declarar ya sea como punteros de forma explícita:
int *x, *y, *z;
o puede crear un typedef de un puntero int:
typedef int *iptr;
iptr x, y, z;
Sólo recuerde que cuando se declara un puntero, el *
es parte del nombre de la variable no el tipo
Pregunta editada, ya que no tiene nada que ver con el Objetivo C –
Sé que hay un duplicado de esta pregunta en algún lugar aquí (definitivamente lo he leído antes) –