关于C语言堆栈的理解:

栈的概念

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,特点“先进后出”,“后进先出”,插入一个元素(压栈),删除一个元素(出栈)。

 栈区的默认使用规则

1 先使用高地址处的空间。

2在使用低地址处的空间。

c语言数据存储
栈区

1、局部变量

2、函数的形式参数

3、函数调用也开辟空间

堆区

1、动态内部分配

2、maloc/free

3、realloc

4、calloc

静态区                  

1、全局变量

2、静态变量

压栈的案例1

压栈例子2

#define _CRT_SECURE_NO_WARNINGS 1       
#include <stdio.h>
int main()
{
    
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };             //调换 int arr【10】 和  int i=0  位置使得   i的地址                  //                                                             始终在arr后面死循环消失但是会报警告
    int i = 0;
    for (i = 0; i <= 12; i++)
    {
        printf("hehe\n");
        arr[i] = 0;

    }
    return 0;
}

 

由&i和&arr【11】、&arr【12】得随着i越来越大arr[i]存在某个arr【i】的地址覆盖的地址

使得i=arr【i】=0       出现死循环

当i=20时出现死循环 (本版本号为VS2022) 

 //Vc6.0环境下<=10就死循环了

/ /gcc编译器<=11就死循环了

/ /VS2013<=12死循环

1.栈区的默认使用:先使用高地址处的空间再使用低地址处的空间

2.数组随着下标的增长地址是由低到高变化

 release版本 和debug版本区别

release版本 和debug版本程序的的内存位置都会不一样

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值