美文网首页
变量地址生命周期的一个问题

变量地址生命周期的一个问题

作者: 胖一一 | 来源:发表于2017-01-07 14:56 被阅读0次

版权声明:本文为作者原创文章,转载时请注明文章来源,否则视为侵权,并按法律程序处理!

面试时经常会考到这样一道改错题:

#includeint* function(int parameter)

{

int a = parameter;

a += 1;

printf("在fuction函数中,变量a的值是%d,  变量a的地址是%d\n", a, &a);

return &a;

}

int main()

{

int parameter = 10;

int *p = function(parameter);

printf("指针p的值是%d, p指向的值是%d\n", p, *p);

return 0;

}

程序原意是在main函数中定义一个变量 parameter,将其传递到函数function中,将parameter赋值给变量a,将a的地址返回给main函数,在main函数再通过a的地址来访问a的值。先来看程序的运行结果:

从运行结果看出,变量a在function函数中的值是11,且地址是1244900。在main函数中,a的地址还是1244900,但是值却是4198508!

本道题错在没有正确理解变量的生命周期。 在function函数执行完后,变量a的生命周期也随之结束,即系统会回收a的存储区域,因此这块存储区域存什么,那是系统的事情,我们就不得而知了。有关变量的作用域的详细情况,一般的教材都会讲到,读者可以参考相关教材。

相关文章

  • 变量地址生命周期的一个问题

    版权声明:本文为作者原创文章,转载时请注明文章来源,否则视为侵权,并按法律程序处理! 面试时经常会考到这样一道改错...

  • 闭包

    闭包:解决变量的私有化问题全局变量:谁都可以访问,修改局部变量:有生命周期

  • OC:static 、 extern 和 const

    static 1、修饰局部变量的时候,该局部变量只会 初始化一次,且 内存中的地址不变,和 延长局部变量的生命周期...

  • iOS开发技能树之C语言-指针

    一、指针与指针变量 指针:就是地址,一个变量的指针就是这个变量的存储地址。 指针变量:用来存放指针(地址)的变量,...

  • vue踩坑记录之变量赋值同步修改

    最近用vue写上拉加载下拉刷新的demo时遇到了一个问题。在生命周期onload函数里把变量B赋值给变量A,在执行...

  • 2016.9.13 AM 课堂笔记

    :表明这个变量是一个地址变量,int表示将来这个地址变量存储的是某个整数的地址1.地址变量初始化int p;在使用...

  • C语言关于指针与指针变量的总结

    指针 一个变量的内存地址称为该变量的“指针”。(指针 即 地址) 存放指针的变量称为"指针变量"。(指针变量 即 ...

  • Go之指针

    1. 指针的概念 指针是存储另一个变量的内存地址的变量 2. 获取变量的地址 Go语言的取地址符是&,放到一个变量...

  • iOS C语言基础 ,指针变量

    指针变量是专门存放内存单元地址的变量。 可以认为指针变量就是地址变量。 指针变量简称指针,其本质就是一个变量。它不...

  • [Rust]生命周期

    简介 一个变量的生命周期就是变量从创建到销毁的整个过程,Rust中主要是通过大花括号的范围控制和计算生命周期。 生...

网友评论

      本文标题:变量地址生命周期的一个问题

      本文链接:https://www.haomeiwen.com/subject/bcsfbttx.html