La mayoría de las veces, los accesos de puntero y array pueden tratarse como si actuaran de la misma manera, siendo las principales excepciones:
1) el operador sizeof
o sizeof(array) devuelve la cantidad de memoria utilizada por todos los elementos de la array
o sizeof(pointer) solo devuelve la cantidad de memoria utilizada por la propia variable de puntero
2) el operador &
o array es un alias para &array[0] y devuelve la dirección del primer elemento del array
o &pointer devuelve la dirección del puntero
3) una inicialización literal de string de una array de caracteres
o char array[] = “abc” establece los primeros cuatro elementos de la array en ‘a’, ‘b’, ‘c’ y ‘\0’
o char *pointer = “ abc” establece el puntero a la dirección de la string “abc” (que puede almacenarse en la memoria de solo lectura y, por lo tanto, no se puede cambiar)
4) A la variable de puntero se le puede asignar un valor, mientras que a la variable de array no se le puede asignar.
int a[10]; int *p; p=a; /*legal*/ a=p; /*illegal*/
5) Se permite la aritmética en la variable del puntero.
p++; /*Legal*/ a++; /*illegal*/
6) Array es una colección de tipos de datos similares, mientras que la variable puntero almacena la dirección de otra variable.
Consulte ¿Diferencia entre puntero y array en C? para más detalles.
Referencias: http://icecube.wisc.edu/~dglo/c_class/array_ptr.html
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA