Aşağıdaki programı:Bellek adreslerini çıkardığımda, sonuç neden beklenenden daha küçük?
#include <iostream>
struct X
{
int a;
float b;
} x[10], *p1, *p2;
int main(int argc, char *argv[])
{
p1 = &x[1];
p2 = &x[5];
int i = p2 - p1;
std::cout << i << std::endl;
}
I bellekte X
'nin düzeni, bir int
ve float
, p1
ihtiva eden 10 kutu ikinci kutuya başında işaret eder görselleştirmek (x[1]
) ve p2
işaret 6 kutu (x[5]
) başında:
X 0 1 2 3 4 5 6 7 8 9
_______________________________
b |__|__|__|__|__|__|__|__|__|__|
a |__|__|__|__|__|__|__|__|__|__|
| |
| |
p1 p2
mi benim doğru çizim? Eğer öyleyse neden i
4 sonucudur?
İki adresin çıkarılmasını anlamanın bazı zorlukları var mı?
Bu soruyu 'c' olarak etiketlediniz, ancak örneğinizde 'cout' ifadesini kullandınız, bunun yerine C++. Hangisini kullanıyorsun? –
Evet, sanırım bir C sorusu, ama sanırım basitlik için cout'u kullandım. – Kobe
@DanielPryden Cevapta bir fark yaratmayacak, değil mi? – Szabolcs