c arrays pointer-to-pointer

¿Es esto un puntero a un puntero del inicio de una matriz?



arrays pointer-to-pointer (2)

Acabo de ayudar a alguien con un código. Él tenía esto:

char dataArray[10];

Luego quería obtener un puntero al inicio de la matriz. En lugar de usar:

&dataArray[0]

o solo

dataArray

El usó

&dataArray

¿Terminó con un puntero a un puntero allí? No estoy seguro de qué &dataArray le daría.


dataArray y & dataArray [0] apunta a la dirección del primer índice de la matriz para que sean lo mismo, pero & dataArray apuntará a la dirección de toda la matriz o podemos decir que dará la dirección donde está la matriz de 10 índices ubicado (en su conjunto)


  • &dataArray[0] es de tipo char * . Eso es un puntero a char .
  • dataArray es de tipo char[10]
  • &dataArray será del tipo char (*)[10] . Ese es un puntero a matriz.

Aparte de eso, el valor será el mismo, es decir, apuntan a la misma dirección pero sus tipos no necesitan ser compatibles.

Ninguno de ellos es un puntero a puntero aquí. Son solo punteros con diferentes tipos.

Nota: Debido a la propiedad de descomposición de la matriz, char [100] se descompondrá en un char * , por ejemplo, cuando se pasa como un elemento de una función.