以下のコードの 6、7、8 行目に興味があります。
#include <stdio.h>
#include <stdlib.h>
void go_south_east(int *lat, int *lon) {
printf("Lat: %p, Long: %p\n", lat, lon);
printf("Address of Lat: %p, Address of Long: %p\n", &lat, &lon);
printf("Address of Lat: %p, Address of Long + 8 bytes?: %p\n", &lat, &lon+8);
printf("Size of Lat: %lu, Size of Long: %lu\n", sizeof(lat), sizeof(lon));
*lat -= 1;
*lon += 1;
}
int main() {
int latitude = 32;
int longtitude = -64;
go_south_east(&latitude, &longtitude);
printf("Avast! Now at: [%i, %i]\n", latitude, longtitude);
return 0;
}
私が得た出力は次のとおりです。
Address of Lat: 0x7fff5fbfe9e8, Address of Long: 0x7fff5fbfe9e0
Address of Lat: 0x7fff5fbfe9e8, Address of Long + 8 bytes?: 0x7fff5fbfea20
Size of Lat: 8, Size of Long: 8
lat および long ポインターのサイズは、long unsigned int であるため、8 バイトであることを理解しています。しかし、メモリ内で互いに 1 バイトしか離れていないのはなぜですか? サイズが8バイトなので、互いに8バイト離れているべきではありませんか? ご意見をお聞かせください。
有益なアドバイスをありがとう。みんなを回答としてマークできたらいいのにと思いましたが、できません。心から感謝する。