Red de conocimiento informático - Conocimiento informático - Ejemplo de análisis de varios métodos de uso de punteros para acceder a matrices bidimensionales

Ejemplo de análisis de varios métodos de uso de punteros para acceder a matrices bidimensionales

Nunca antes entendí completamente el concepto de matrices. Simplemente pensé que el nombre de la matriz era solo un puntero constante y su uso era similar al de un puntero básico. Entonces, cuando intento usar un puntero secundario para acceder a una matriz bidimensional, a menudo obtengo errores. El siguiente es un programa incorrecto que acabo de empezar a escribir: #include

El siguiente es el programa de ejemplo: intmain(){intiArray[2][3] = {{1,2,3},{4,5,6}};int(*pArray)[3] = NULL;pArray = iArray; printf("matriz[0][0] = %d\n", pArray[0][0]);printf("matriz[1][2] = %d\n", pArray[1][ 2] );return0;} Analicemos brevemente este programa: Sabemos que la dirección de combinación del operador [] es de izquierda a derecha, pArray[1][2] es equivalente a (* (pArray + 1))[2 ], y dado que pArray es un puntero de matriz y la longitud de la matriz es 3, * (pArray + 1) representa la matriz iArray[1], entonces pArray[1][2] es completamente equivalente a iArray[1][ 2] . Si tenemos que usar un puntero secundario para acceder a una matriz bidimensional, tenemos que tomar prestada una matriz de puntero (la matriz almacena todos los datos de tipo puntero. El siguiente es un programa de ejemplo: intmain(){intiArray[2][3). ] = {{1,2,3},{4,5,6}};int*ipArray[2] = {iArray[0], iArray[1]};int**pArray = NULL;pArray = ipArray; printf( "array[0][0] = %d\n", pArray[1][2]);return0;} Dado que el puntero de segundo nivel salta dos veces, se necesita espacio adicional para almacenar el puntero de primer nivel. Por lo tanto, generalmente no se recomienda utilizar punteros secundarios para acceder a matrices bidimensionales.