En C hay tres tipos básicos de punteros.
Veamos a través de esto con los siguientes ejemplos.
Ej 1.
int a;
- ¿Podría hacerlo sin espacio adicional y en tiempo de ejecución O (n)?
- ¿Cuáles son las características de los árboles de coníferas y cuáles son algunas plantas / árboles con aspectos similares?
- ¿Qué es un árbol rojo-negro?
- ¿Por qué el algoritmo ikj es más rápido que el algoritmo ijk para la multiplicación de matrices?
- ¿Cuál es la diferencia entre los algoritmos Reheap up y Reheap down?
En el ejemplo anterior, a es variable y & a es puntero
Ej: 2
int * a;
En los ejemplos anteriores * a es variable y & a es puntero pero a es puntero (para * a ) y variable (para & a ). Entonces a se llama variable puntero
Ej: 3
int a [10];
En el ejemplo anterior, a es puntero y a [0], a [1] , … son variables.
En su caso, arr1 y arr2 son punteros cuyos valores son diferentes.
Si declara int arr1 [10], int arr2 [10], el compilador asigna diferentes ubicaciones para arr1 y arr2. Entonces cuando ejecutas la declaración
if (arr1 == arr2), está comparando los punteros que de todos modos son diferentes. Por lo tanto, la declaración es False. En este caso, no está comparando el contenido de las matrices. Pero cuando ejecuta la instrucción memcmp (arr1, arr2, n * sizeof (int)), en realidad está comparando el contenido de la matriz. Está pasando los punteros de ambas matrices a la función memcmp.