您身边的网站建设专家
成功案例

【建站服务】高端!网站定制/设计/优化/二次开发/制作/搭建-昆山高端网站建设-域名申请

日期: 2022-09-21 02:17:31 浏览数:8


上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


高端!网站定制/设计/优化/二次开发/制作/搭建-昆山高端网站建设

网站建设.png

通常,在函数体内定义了一个变量,每当程序运行到该语句时都会给该局部变量分配栈内存。但随着程序退出函数体,系统就会收回栈内存,局部变量也相应失效。但有时候我们需要在两次调用之间对变量的值进行保存。

通常的想法是定义一个全局变量来实现。但这样一来,变量已经不再属于函数本身了,不再仅受函数的控制,给程序的维护带来不便。

静态局部变量正好可以解决这个问题。静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到下一次调用,直到下次赋新值。

静态局部变量有以下特点:



  1. nt main() {
            auto basicLambda = [] { cout << "Hello, world!" << endl; };
            basicLambda();
            return 0;}

    编译报错:

    $ g++ test.cpp -o test
    test.cpp: In function ‘int main()’:test.cpp:6:7: error: ‘basicLambda’ does not name a type  auto basicLambda = [] { cout << "Hello, world!" << endl; };
           ^test.cpp:7:14: error: ‘basicLambda’ was not declared in this scope
      basicLambda();
                  ^

    经过查询,发现 gcc 是 4.8.4 版本,应该是默认不开启,但是可以通过添加编译参数 -std=c++11 解决问题,

    $ g++ test.cpp --std=c++11 -o test
    $ ./testHello, world!
    lanaw

       lanaw

      320***0048@qq.com

    4年前 (2018-06-07)
  2.    KO

      568***914@qq.com

       参考地址

    22

    1、寄存器存在于CPU中,速度很快,数目有限

    存储器就是内存,速度稍慢,但数量很大。

    计算机做运算时,必须将数据读入寄存器才能运算。

    2、存储器包括寄存器,存储器有 ROM 和 RAM

    KO

       KO

      568***914@qq.com

       参考地址

    4年前 (2018-10-11)
  3.    KO

      568***914@qq.com

    13


    在局部变量前加上“static”关键字,就成了静态局部变量。静态局部变量存放在内存的全局数据区。函数结束时,静态局部变量不会消失,每次该函数调用 时,也不会为其重新分配空间。它始终驻留在全局数据区,直到程序运行结束。静态局部变量的初始化与全局变量类似.如果不为其显式初始化,则C++自动为其 初始化为0。

    静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。静态局部变量与局部变量在存储位置上不同,使得其存在的时限也不同,导致对这两者操作 的运行结果也不同。

    KO

       KO

      568***914@qq.com

    4年前 (2018-10-11)
  4.    icoding

      rsu***08@gmail.com

    18

    在一个类里建立一个 const 时,不能给他初值:

    class foo{public:    foo():i(100){}private:    const int i=100; // 错误!!!};//或者通过这样的方式来进行初始化foo::foo():i(100){}
    更多查看文章:C++ static、const 和 static const 类型成员变量声明以及初始化
    icoding

       icoding

      rsu***08@gmail.com

    4年前 (2018-12-02)
  5.    VALUE

      phj***89905610@163.com

    11

    1、auto 可以根据对变量的赋值内容来决定变量的数据类型。

    auto a=1; // 表示 int

    2、函数 func 中的 static 保持局部变量 i 在函数间传递时值不会被重新初始化。即保留了局部变量的值。

    #include <iostream>
     // 函数声明 void func(void);
     static int count = 10; /* 全局变量 */
     int main(){
        while(count--)
        {
           func();
        }
        return 0;}// 函数定义void func( void ){
        static int i = 5; // 局部静态变量
        i++;
        std::cout << "变量 i 为 " << i ;
        std::cout << " , 变量 count 为 " << count << std::endl;}

    输出结果:

    变量 i 为 6 , 变量 count 为 9变量 i 为 7 , 变量 count 为 8变量 i 为 8 , 变量 count 为 7变量 i 为 9 , 变量 count 为 6变量 i 为 10 , 变量 count 为 5变量 i 为 11 , 变量 count 为 4变量 i 为 12 , 变量 count 为 3变量 i 为 13 , 变量 count 为 2变量 i 为 14 , 变量 count 为 1变量 i 为 15 , 变量 count 为 0

    假如 func 里面的 i 不是 static:

    #include <iostream>
     // 函数声明 void func(void);
     static int count = 10; /* 全局变量 */
     int main(){
        while(count--)
        {
           func();
        }
        return 0;}// 函数定义void func( void ){
        int i = 5; // 局部非静态变量
        i++;
        std::cout << "变量 i 为 " << i ;
        std::cout << " , 变量 count 为 " << count << std::endl;}

    输出结果:

    变量 i 为 6 , 变量 count 为 9变量 i 为 6 , 变量 count 为 8变量 i 为 6 , 变量 count 为 7变量 i 为 6 , 变量 count 为 6变量 i 为 6 , 变量 count 为 5变量 i 为 6 , 变量 count 为 4变量 i 为 6 , 变量 count 为 3变量 i 为 6 , 变量 count 为 2变量 i 为 6 , 变量 count 为 1变量 i 为 6 , 变量 count 为 0

    主函数每次调用 func 函数,i 的值都被初始化为 5,因此执行 10 次的 i 的值都是 5+1=6。

    3、extern关键字:用于不同文件之间的变量和函数的传递。

    main.cpp:

    #include <iostream>
     int count ;//定义变量extern void write_extern();//声明引用外部函数
     int main(){
       count = 5;//变量初始化
       write_extern();//调用外部函数}support.cpp#include <iostream>
     extern int count;//引用了外部变量count
     void write_extern(void)//外部函数定义{
       std::cout << "Count is " << count << std::endl;}



高端!网站定制/设计/优化/二次开发/制作/搭建-昆山高端网站建设


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设上往建站