¿Por qué la diferencia entre dos direcciones no es múltiplo del tamaño del elemento?
No pude entender por qué la variable es 6, cómo se está calculando.
#include
using namespace std;
int main()
{
char A[] = { “abyx”, “dbta”, “cccc”};
int var = *(A+1) – *A+1;
cout << “1: ” << ((A+1)) << “\n”;
cout << “2: ” << (*A+1) << “\n”;
cout << “char: ” << var << “\n”;
cout << &A[0][1] – &A[1][0] << std::endl;
}
davy.ai
Explicación:
En este código, A es un array de punteros a caracteres que contiene tres strings. La expresión *(A+1) da la dirección del segundo string “dbta”. La expresión *A+1 da la dirección del segundo caracter ‘b’ en el primer string “abyx”.
Entonces, la variable var se le asigna el valor de 4 (dirección de ‘b’) menos 97 (código ASCII para ‘a’) más 1, que es 6.
La última línea del código muestra la diferencia entre la dirección del primer caracter en el segundo string y la dirección del segundo caracter en el primer string. Esto también es igual a 6, que es la longitud del primer string “abyx”.