Al crear una matriz de punteros en c, ¿qué efecto tiene agregar paréntesis?matriz de punteros C
Por ejemplo
int (*poi)[2];
vs
int *poi[2];
Al crear una matriz de punteros en c, ¿qué efecto tiene agregar paréntesis?matriz de punteros C
Por ejemplo
int (*poi)[2];
vs
int *poi[2];
puntero a una matriz de 2 int
s:
int (*poi)[2];
Una matriz de dos int
punteros:
int *poi[2];
Normalmente matriz tiene mayor precedencia que el puntero, pero si se agrega entre paréntesis a continuación, el puntero viene "primero".
Los corchetes se unen más apretados que *, por lo que el primero es una matriz de punteros int, mientras que el segundo es un puntero a una matriz de ints.
Tienes eso de vuelta al frente, ¿no? –
Otra manera, creo. –
El operador de índice []
se une más fuerte que el operador de desvinculación *
.
int *poi[2]
se traduce en:
Si ve poi, aplicar [x]
a ella, a continuación, eliminar la referencia al resultado a través de *
y se obtiene una int
. Así que es una matriz de 2 punteros a int.
En
int (*poi)[2]
los parantheses forzar la *
que deben aplicarse primero. Así que en cualquier momento poi se utiliza, si aplica *
primero, y luego [x]
obtiene un int
. Así que es un puntero a una matriz de 2 int
.
Guarda el desgaste en el teclado –