Problemas básicos de punteros y matrices en lenguaje C
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: