Red de conocimientos sobre prescripción popular - Remedios caseros - Problemas básicos de punteros y matrices en lenguaje C

Problemas básicos de punteros y matrices en lenguaje C

La primera pregunta: int(* pz)[2]; es para definir un puntero de matriz,

La segunda pregunta: no hay ningún carácter de control de formato %p, se recomienda cambiarlo a printf (" pz =% d, pz+1 =% d \ n ", pz, pz+1);? Desarrolla un buen hábito. pz = zippo asigna la primera dirección de la matriz zippo al puntero pz. Llamas directamente a printf(" Pz = % d, Pz+1 =% d \ n ", Pz, Pz+1);? La salida es la dirección de la matriz, no el valor de la matriz. pz corresponde a la dirección de 2 en el primer elemento {2, 4} del array, pz[0] también es la dirección de 2 en el primer elemento {2, 4} del array, por lo que son iguales, y pz +1 es el segundo elemento de la matriz La dirección de 6 en {6, 8}, pz. Debido a que el tamaño del elemento de la matriz es 2, su pz[0]+2 equivale a mover el puntero hacia abajo un elemento.

El proceso es el siguiente:

¿#Incluir? " stdio.h "

¿No es válido? principal(vacío)

{

int? zippo[4][2]={{2, 4}, {6, 8}, {1, 3}, {5, 7 } };

int(* pz)[2];

pz = zippo

printf("pz=%d,pz+1=%d\n ",pz,pz+1);

printf ("pz[0]=%d,pz[0]+2=%d\n ",pz[0],pz[0]+2);

}

Espero adoptar. ¿cuá...? Echa un vistazo a los resultados de la operación: