栈的生长方向和内存存放方向

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈的生长方向和内存存放方向相关的知识,希望对你有一定的参考价值。

栈的生长方向

栈的生长方向向下

内存存放方向

采取小端模式,内存存放方向向上

图解:

案例

#include<stdio.h>
#include<stdlib.h>

//1. 栈的生长方向
void test01() {

	int a = 10;
	int b = 20;
	int c = 30;
	int d = 40;

	printf("a = %d\\n", &a);
	printf("b = %d\\n", &b);
	printf("c = %d\\n", &c);
	printf("d = %d\\n", &d);

	//a的地址大于b的地址,故而生长方向向下
}

//2. 内存生长方向(小端模式)
void test02() {

	//高位字节 -> 地位字节
	int num = 0xaabbccdd;
	unsigned char* p = (unsigned char*)&num;

	//从首地址开始的第一个字节
	printf("%x\\n", *p);
	printf("%x\\n", *(p + 1));
	printf("%x\\n", *(p + 2));
	printf("%x\\n", *(p + 3));
}

int main()
{
	test01();
	test02();

	return 0;
}

以上是关于栈的生长方向和内存存放方向的主要内容,如果未能解决你的问题,请参考以下文章

碎碎念

码海拾遗:内存四区

栈的生长方向理解

把大端小端与堆栈的生长方向联系起来记忆

堆与栈的比较

面试题:堆和栈的区别