C++中函数中的局部变量到底是不是执行到变量定义处才分配内存吗,为什么我用VS调试有疑问

作者&投稿:窄初 (若有异议请与网页底部的电邮联系)
在c++中,在函数中的是不是只有参数和局部变量有分配内存地址??那么我们定义的功能有没有内存地址??~

参数有固定的一个内存地址,局部变量则是当时申请当时用。具体的随便找本c++入门的书看看函数与变量部分即可。

局部(自动)变量只是说明它的作用范围为局部生存时间取决于它是临时还是静态你可以声明一个变量是静态局部变量,只在第一次进入作用域时初始化,它的值下次调用函数就不会再次初始化了

C语言C++语言的局部非静态变量或者局部非静态对象在函数开始执行的时候就分配好了内存空间,但是在到达对象或者变量的定义点之前,是不能对其进行引用的。对于局部非静态对象,构造函数只有到定义点才调用。这些都是实现细节,不是C++标准定义的,所以不同的编译器和系统可能有所不同的实现。在C++语言中,一个对象只有调用了构造函数之后才算真正的创建完成,所以即使内存提前分配,但是对象依然还没有完成创建。

Java语言和C++语言本质上不一样:一个是解释型语言、一个是编译型语言。C++语言经过编译之后直接生成CPU可以直接处理的机器指令,而java语言需要首先编译成某个中间语言,执行的时候再由解释器一步一步解释。所以C++语言编写的程序在编译时就可以直接进行优化,比如对于函数的局部变量,因为个数确定、类型确定,所以可以直接在函数的开头生成分配容纳所有局部变量的内存空间的指令(通常是一个修改栈顶的指令),执行一个指令总比执行多个分开的指令要快得多。

你用的Visual Studio,在调试模式下分配给局部变量的内存会大很多,这是用于检测堆栈异常的。


为什么 在一个函数中,既可以使用本函数中的局部变量,又可以使用全局变量...
因为在一个函数内部,虽然既承认局部变量,也承认全局变量,但是在这个函数范围内,局部变量比全局变量效果更大,所以在小范围内,全局变量没有局部变量作用域大。

函数里的局部变量在函数退出后会不会自动释放?
会自动释放,指针也是一样的。局部变量的作用域是定义该变量的函数或定义该变量的复合语句。只在定义它的函数或复合语句范围内有效,只能在定义它的函数或复合语句内才能使用它们。局部变量的生存期是从函数被调用的时刻算起到函数返回调用处的时刻结束。

函数中未指定存储类别的局部变量,其隐含的存储类别为()
函数中未指定存储类别的局部变量,其隐含的存储类别为自动存储类别。函数中的局部变量,如果不专门声明为static存储类别,都是动态的分配存储空间的,数据存储在动态存储区中。这类变量叫做自动变量,自动变量可以用关键字auto作为存储类别的声明,实际上关键字auto是可以省略的(一般都是不写的),不写则自...

C语言函数中的局部变量都是动态存储为什么错误?
因为还可以是静态局部变量,如:void f(){ \/\/...static int n=1;\/\/...}

一个c++程序--函数中的局部变量能返回值吗??
一般的来说,函数是可以返回局部变量的,函数一般的操作是吧局部变量复制后返回给调用者,不能返回局部变量的是指针,因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。但是其他的值都是没问题的,其实都是一样的东西,只是指针在...

函数极限定义中的局部有界性是什么意思啊?
当X趋向于无穷时,函数极限的局部有界性定理:如果lim(x->∞)f(x)存在,则存在正数X,使得当|x|>X时,f(x)有界。证明:设lim(x->∞)f(x)=A,则由"ε-X"定义知,对于ε=1,存在正数X,使得当|x|>X时,恒有|f(x)-A|X时,有|f(x)|≤|f(x)-A|+|A|X时,f(x)有界。...

Python-嵌套函数中的局部变量?
编译函数主体,然后验证“自由”变量(未在函数本身中通过赋值定义),然后将其作为闭包单元绑定到函数,并且代码使用索引引用每个单元格。pet_function因此具有一个自由变量(cage),然后将其通过一个闭合单元引用,索引为0的闭合本身指向局部变量cage在get_petters功能。当你实际调用该函数时,该闭包将用于...

C++中 函数中定义的局部指针需要delete吗
1,函数冲定义的局部变量指针,单纯是一个局部变量是不用delete;2,C++ 如果类中有一个指针数据成员,而没有用new, 析构函数也是不用delete的;在类或函数中,int* ,char* 这些只要不是new的,也同样不用释放,系统会自动把他们占的内存释放掉,只有new的才会手动的去delete 原理:int*, char*...

C++成员函数中的静态局部变量能不能提高程序的执行效率
首先,局部变量储存于栈中,栈是应用程序固定大小的CPU直接管理的一块内存,使用栈内存并不需要向系统申请分配,而是直接的读写,所有类型的内存当中,栈的速度是最快的,也就是说,局部变量的效率是最高的。所以使用局部变量通常要注意的不是效率,而是它的大小和生存期,因为栈的大小是程序编译后就...

函数极限的局部有界性,为什么加局部二字啊?(数列的性质中就没有局部...
函数的局部有界性是指函数在极限点的邻域内有界,而在整个定义域上并不一定有界. 数列其实可以看作是一个离散的函数.但数列求极限是总是令N趋向于无穷大.而函数求极限则不然,因此数列的有界性是对于整个数列而言的.更直白的说,数列如果存在极限,那么它前面的有限项必然都是有限的数,所以肯定有界,而...

容城县17070345648: C++中,如果调用函数,函数中变量是局部变量吗 -
前胆心脑: 局部(自动)变量只是说明它的作用范围为局部生存时间取决于它是临时还是静态你可以声明一个变量是静态局部变量,只在第一次进入作用域时初始化,它的值下次调用函数就不会再次初始化了

容城县17070345648: C++中函数中的局部变量到底是不是执行到变量定义处才分配内存吗,为什么我用VS调试有疑问 -
前胆心脑: C语言C++语言的局部非静态变量或者局部非静态对象在函数开始执行的时候就分配好了内存空间,但是在到达对象或者变量的定义点之前,是不能对其进行引用的.对于局部非静态对象,构造函数只有到定义点才调用.这些都是实现细节,不...

容城县17070345648: C++中,如何分辨我所定的变量是局部还是全局变量尼?
前胆心脑: 在某个函数内部定义的变量就是局部变量,这个变量只在某个函数的内部管用.除了这个函数这个变量就不存在了.全局变量是在函数外部定义的变量,他不属于哪个函数.属于整个源文件.

容城县17070345648: 在C++中,函数参数默认值为什么不允许为局部变量呢?? -
前胆心脑: 局部变量是你函数调用之后,才会被构造出来,而函数参数的值的存在,是在调用函数的时候就必须存在.一个是函数调用之后才存在,一个是函数调用之时就存在,你说,参数默认参数怎么能为局部变量呢!

容城县17070345648: 主函数中定义的变量在子函数中是否有效? -
前胆心脑: 主函数中定义的变量在子函数中有效. 变量按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区. 全局变量:在整个工程文件内都有效;“在函数外定义的变量”,即从定义变量...

容城县17070345648: 一个c++程序 -- 函数中的局部变量能返回值吗?? -
前胆心脑: 一般的来说,函数是可以返回局部变量的,函数一般的操作是吧局部变量复制后返回给调用者,不能返回局部变量的是指针,因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错.但是其他的值都是没问题的,其实都是一样的东西,只是指针在这种情况下被混淆了.局部变量(Local variables)指在程序中只在特定过程或函数中可以访问的变量.局部变量是相对于全局变量而言的.在C++、C#、Ruby这些面向对象语言中,一般只使用局部变量.面向对象编程是现在普遍采用的是软件开发方法,因此无需考虑是局部变量还是全局变量,说到变量,往往都是局部变量.

容城县17070345648: 局部变量是否只能在某个函数中定义并且只能在该函数中使用 -
前胆心脑: 局部变量从名字上看就是在某个函数范围内定义的,所以称为局部, 他的生命期为从定义时起,到这个函数结束

容城县17070345648: 静态局部变量和局部变量有何不同啊 C++中 -
前胆心脑: 静态局部变量的生命周期长,它只被定义一次比如 for(int i = 0; i <100; i++) {static int c =3;//只执行一次.c++; }地址空间不同,静态存储区和栈

容城县17070345648: 局部变量是否只能在某个函数中定义并且只能在该函数中使用
前胆心脑: 无效. 首先明确,子函数和调用这个函数的函数(相对意义上的主函数)是两个不同的函数. 标准C/C++不支持局部函数.函数内定义的对象的名称具有函数作用域,有效范围从定义处开始到函数体结束,和其它函数内的名称无关.即使在两...

容城县17070345648: VC+++ 全局变量的定义 -
前胆心脑: 【原创】下面是对C++作用域的几个总结:按照作用域来分,有两种变量:全局变量和局部变量,全局变量是在所有函数体外部声明的,局部变量则是局限于一个函数, 局部变量也叫自动变量,即auto修饰符,但这个修饰符是自动的,所以...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网