C语言变量作用域以及栈,堆困惑!!!!

https://m.toutiao.com/is/Jn8m7wr/

这几天遇到一段很困惑的代码。用函数内部变量地址做返回值时候,没法正确返回变量a地址,返回的是OX0如下:

我在函数内部再加一个指针q,然后把a地址付给这个指针,最后返回这个指针就能的到变量a地址,如下:

以我理解的知识函数内的变量应该再函数引用结束后才回收内存,最起码会把函数返回值返回才应该回收内存吧,上面两个代码应该是一样结果的啊。。。

有没老师给个指教,不胜感谢。

(0)

相关推荐

  • C语言指针学习总结

    作者:driveby 来源:https://www.cnblogs.com/KKSJS/p/9622812.html 上学的时候学习C语言,最烦的就是里面指针,可是指针也恰恰是C语言的灵魂. 最近在重 ...

  • Python 变量作用域 LEGB (下)

    上篇:Python 变量作用域 LEGB (上)-- Local,Global,Builtin https://www.cnblogs.com/yvivid/p/python_LEGB_1.html ...

  • C语言函数参数压栈的顺序是?

    今天分享关于C语言函数参数压栈顺序的问题.按照日常习惯,C语言的函数参数压栈顺序是从左到右吧?但是事实却是相反的,C语言函数参数压栈顺序是从右到左的.下面看一个程序: #include <std ...

  • linux bash变量作用域

    一,思考一个问题,当在shell里执行某个程序时,shell是怎么找到这个程序的? shell会去$PATH环境变量定义的目录里去找这个命令.环境变量里一般包括/usr/local/sbin:/usr ...

  • 零基础学C语言——变量、常量与数据类型

    变量 对于初学编程语言的人来说,变量这个概念第一反应或许是数学中的自变量x.在编程中,与之相似,即变量中存放的数据可以更改.但是与数学不同的是,变量在计算机中还有额外的属性. 一个变量包含的属性: 变 ...

  • C语言程序里全局变量、局部变量、堆、栈等概念

    文章目录 一. 寄存器与固件库的差异 二.C语言程序中内存分配详解 三.关键字volatile 一. 寄存器与固件库的差异 固件库就是函数的集合. 当我们写代码的时候可以直接对寄存器进行操作,但是如果 ...

  • C语言程序里全局变量、局部变量、堆、栈的存储区域

    文章目录 一.存储区域介绍 二.在ubuntu系统中输出信息进行验证 三.在Keil中针对stm32系统进行验证 四.总结 五.参考资料 一.存储区域介绍 C语言在内存中一共分为如下几个区域 区域 作 ...

  • 【C语言核心基础】基本运算、变量、数组、指针、函数、结构体...

    C 语言基础 // 引入头文件.里面包含了重要的 printf. #include <stdio.h> // 入口函数. // 参数一指输入的参数个数,参数二保存了所有参数. // 返回值 ...

  • 堆、栈和堆栈的区别

    堆(heap):堆是一种经过排序的树形数据结构,每个结点都有一个值. 栈(stack):它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取.(PS:颇有砌墙的砖--后来者居上的赶脚 ...

  • c语言中结构体成员变量使用“.”符号赋值方法

    在C语言中定义结构体类型的变量时,其内部的成员变量赋值除常规的方法外,也可以通过点号"."进行赋值,如下图所示: 备注:在Linux系统上使用gcc / g++编译器调试通过,其它 ...