天天看點

C語言棧生成方向以及記憶體存放方向(小端對齊)

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

C語言棧生成方向以及記憶體存放方向(小端對齊)

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();
 }      

下面是運作截圖:

C語言棧生成方向以及記憶體存放方向(小端對齊)

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();
 }      
C語言棧生成方向以及記憶體存放方向(小端對齊)