学习结构体之后,就想着来看看栈上多个变量的地址的分配情况,是不是也有某种规则一个接一个挨着。不想发现连续的两个变量的地址并不连续,可以说分得很开,而且从高地址到低地址分配。
虽然并不知道系统(还是编译器? 谁告诉我下)为什么这么做,但索性写了个程序也看看其它区域是怎么分配地址的。
小代码如下,如果有错误,请留言,我会从心底里感谢你的。
#include <stdio.h>
#include <string.h>
#include <cstdlib>
//打印整形数组
void printfarr(unsigned long *arr, size_t size){
for (size_t i = 0; i < size; i++)
{
printf("%x ", arr[i]);
}
printf("\n");
}
//根据传入的数组arr,比较大小,在out上对应标上其大小的顺序值
//总觉得这个算顺序的办法好笨,谁有更好的麻烦贡献出来
void sx(unsigned long* arr, unsigned long *out, size_t size){
memset(out, -1, size*sizeof(unsigned long));
for (size_t i = 0; i < size; i++)
{
int min;
for (size_t j = 0