Puntero vs Array en C

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *