Una matriz int arr [10] = {}, la dirección de arr es 100, en una máquina de 32 bits, entonces & arr + 4 =? 116 o 260 u otros?

Depende de sizeof (int), pero digamos que es 4 (supongamos caracteres de 8 bits, entero de 32 bits para adaptarse al tamaño de palabra “natural” de la arquitectura).

Arr es una matriz de int. Al hacer address-of en una matriz, la caída del puntero NO tiene lugar, por lo tanto, obtendrá un puntero a una matriz de 10 pulgadas (int (* p) [10]) apuntando al comienzo de arr (100, supongo decimal )

+4 es aritmética de puntero, sop + 4 = p + 4 * sizeof (* p). P apunta a matrices de 10 ints. sizeof (* p) (sizeof es otra situación de caída sin puntero) es por lo tanto 10 * sizeof (int) => 40. 4 * 40 = 160 + 100 => 260.

Tal vez, porque el estándar tiene algo que decir sobre la generación de punteros e ir demasiado lejos, por así decirlo, incluso si nunca hace nada con el puntero:

De 6.5.6 Operadores aditivos, [8] :
“Si tanto el operando del puntero como el resultado apuntan a elementos del mismo objeto de matriz, o uno pasado el último elemento del objeto de matriz, la evaluación no producirá un desbordamiento; de lo contrario, el comportamiento no está definido”.

Diría que, dado un número entero de 4 bytes, la dirección de arr + 4 sería 260.

prueba muy básica:

#include

int main (int argc, char ** argv) {

int arr [10] = {};

printf (“sizeof int:% d \ n”, sizeof (int));
printf (“% ld% ld \ n”, & arr, & arr + 4);

devuelve 0;
}
gcc go.c -o arrtest && ./arrtest
sizeof int: 4
140737463506560 140737463506720

140737463506720 – 140737463506560 = 160. es decir, 5 x 32 bits (4 bytes)
entonces la dirección de inicio de arr + 4 sería, si comienza desde 100 como se solicitó, en 260.

Si el entero es de 2 bytes, & arr + 1 apuntará a la dirección 120. Y si la memoria está libre después de 120 direcciones, & arr + 4 apuntará a la dirección 160.
& arr = 100
& arr + 4 = 160

Si el entero es de 4 bytes
& arr = 100
& arr + 4 = 220

More Interesting

Cómo mejorar mi proceso de pensamiento para las entrevistas de codificación

Los entrevistadores me dicen que mis habilidades de programación en C ++ son buenas, pero no lo suficientemente buenas. ¿Qué métricas / herramientas usan los entrevistadores al evaluar el desempeño?

¿Qué tipo de preguntas le hicieron en su entrevista los reclutadores de Amazon? ¿Como de la estructura de datos, algoritmos, programación?

¿Puedo escribir código en mi computadora portátil en lugar de una pizarra durante una entrevista de trabajo? ¿Qué tal proyectado en una pantalla para que todos en la sala puedan verlo? ¿Por qué perder el tiempo en una habilidad irrelevante como codificar en pizarras blancas?

¿Cómo es la entrevista telefónica de Google?

¿Es malo usar funciones de lenguaje integradas en entrevistas técnicas?

¿Cuáles son algunas de las preguntas importantes de la entrevista técnica que utiliza la estructura de datos matriciales?

¿Cómo podemos encontrar el número de subcadenas distintas en una cadena que son palíndromos en O (N) u O (N log N)?

Dos números reales distintos entre 0 y 1 están escritos en dos hojas de papel. Debe seleccionar una de las hojas al azar y declarar si el número que ve es el mayor o el menor de los dos. ¿Cómo se puede esperar ser correcto más de la mitad de las veces que juegas?

Hay una matriz de tamaño 'N', y todos los números que contiene son distintos, excepto uno que se repite solo una vez. ¿Cómo encontrará qué número se repite atravesando la matriz solo una vez?

¿Cómo es la entrevista en persona en Google?

¿Por qué se hacen preguntas sobre la estructura de datos en las entrevistas integradas en las empresas indias?

¿Por qué las empresas te asignan tareas de tipo universitario en una entrevista de trabajo para un programador?

Cómo comenzar con la codificación como principiante

Cómo resolver problemas difíciles en situaciones de presión como entrevistas