🌂首先這是一個很詳細的圖檔,看下,簡單記憶一下:

1、棧的生成方向
#include<stdio.h>
void fun1()
{
int z = 10; //棧底(高位址)
int x = 20;
int c = 30;
int d = 40; //棧頂(低位址)
printf("變量z位址:%#x\n",&z);
printf("變量x位址:%#x\n",&x);
printf("變量c位址:%#x\n",&c);
printf("變量d位址:%#x\n",&d);
}
int main()
{
fun1();
}
下面是運作截圖:
2、記憶體的存儲方式
#include<stdio.h>
void fun1()
{
int a = 0xaabbccdd;
unsigned char *p =&a; //保證列印一個位元組
printf("%x\n",*p);
printf("%x\n",*(p+1)); //得到高位址
}
int main()
{
fun1();
}