我只是想知道C中的内存地址对齐。我让这个程序看到了输出地址。我执行程序时,其中一个printf行启用了测试。
#include "stdio.h"
int main(){
int number1=1;
int number2=2;
int number3=3;
int number4=4;
int number5=5;
printf("number1: %p number5: %p number3: %p number2: %p number4: %p \n",&number1,&number5,&number3,&number2,&number4);
//printf("number1: %p number5: %p number3: %p \n",&number1,&number5,&number3);
}
自行使用第一个printf的结果
number1:0x7ffeb26e8abc
number5:0x7ffeb26e8aac
number3:0x7ffeb26e8ab4
number2:0x7ffeb26e8ab8
number4:0x7ffeb26e8ab0
正如您所看到的,地址中的最后一个字节从第一个变量递减到最后一个变量。它从“bc”到“b8”到“b4”再到“b0”到“ac”。
自行使用第二个printf的结果。
number1:0x7ffee620d684
number5:0x7ffee620d67c
number3:0x7ffee620d680
您可以看到它从第一个声明的变量number1开始递减地址位置。它从“84”变为“80”到“7c”。
基于第一次printf测试,我认为第二次测试会在打印中显示未对齐的地址。我希望地址按照声明的顺序对齐。
测试2的预期结果。
根据测试2中打印语句的声明,它看起来不像变量number2和number4在地址对齐中。
问题
答案 0 :(得分:2)