• 全局变量-局部变量-静态变量


    全局变量和局部变量

    定义 在函数内部的 变量叫局部变量(函数的形参也是局部变量)

    定义在 所有函数的外面的变量叫全局变量

    全局变量在所有函数中均可以使用,局部变量只能在定义它的函数内部使用 (需要引入头文件声明吧,否则怎么知道变量作用域)

    静态变量

    全局变量都是静态变量 。局部变量定义时如果前面加了“ static ”关键字,则
    该变量也成为静态变量

    静态变量的存放地址 ,在整个程序运行期间,都是固定不变的

    非静态变量 一定是局部变量 地址每次函数调用时都可能不同 在函数的一次
    执行期间不变

    如果未明确初始化,则静态变量会被自动初始化成全 0( 每个 bit 都是 0 ),局部
    非静态变量的值则随机

    #include<iostream>
    using namespace std;
    void Func()
    {
        static int n = 4; //静态变量只初始化一次
        cout << n << endl;
        ++n;
    }
    int main()
    {
        Func();
        Func();
        Func();
        return 0;
    }

    静态变量应用 :strtok 的实现

    #define _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    #include<cstring>
    using namespace std;
    int main()
    {
        char str[] = "- this, a sample string, OK.";
        //下面要从 str 逐个抽取出被 " ,.-" 这几个字符分隔的字串
        char *p = strtok(str, " ,.-");
        while (p != NULL)
        {
            cout << p << endl;
            p = strtok(NULL, " ,.-");
            //后续调用 第一个参数必须是 NULL
        }
        return 0;
    }
    #define _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    #include<cstring>
    using namespace std;
    
    
    /*char *strchr(const char *str, int c)
    在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。*/
    char * strtok_zty(char *p, char *sep)
    {
        static char *start;
    if (p)
            start = p;
        for (; *start && strchr(sep, *start); ++start);
        if (*start == 0)
            return NULL;
        char *q = start;
        for (; *start && !strchr(sep, *start); ++start);
        if (*start)
        {
            *start = 0;// ''ascii值,告知这个字符串结束了"this"
            ++start;
        }
        return q;
    
    }
    
    int main()
    {
        char str[] = "- this, a sample string, OK.";
        //下面要从 str 逐个抽取出被 " ,.-" 这几个字符分隔的字串
        char *p = strtok_zty(str, " ,.-");
        while (p != NULL)
        {
            cout << p << endl;
            p = strtok_zty(NULL, " ,.-");
            //后续调用 第一个参数必须是 NULL
        }
        return 0;
    }

    链接:https://www.jianshu.com/p/011e21a20833

    以下内容以c语言为标准;

    字符型char和整型int;

    字符型变量用于存储一个单一字符,在 C 语言中用 char 表示,其中每个字符变量都会占用 1 个字节(8位二进制数)。

    整型int在内存中占用空间为四个字节(32位二进制数)

    字符'0':char c = '0'; 它的ASCII码实际上是48。内存中存放表示:00110000

    字符'' :ASCII码为0,表示一个字符串结束的标志。这是转义字符(整体视为一个字符)。由于内存中存储字符,依然是存储的是对应字符集的字符编码;所以内存中的表现形式为00000000

    整数0 :内存中表示为:00000000 00000000 00000000 00000000;虽然都是0,但是跟上面字符''存储占用长度是不一样的;

    C 库函数 char *strchr(const char *str, int c) 在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。



  • 相关阅读:
    使用docker试用各种软件及docker-ES设置
    Atom读写MarkDown插件选择,以及墙内安装markdown-preview-enhanced,及markdown和mermaid使用教程
    杂谈迁移tomcat项目到docker,以及遇到的问题
    MongoSpark 28799错误
    MongoDB运维心得(一)
    Ubuntu16.04 appstreamcli错误
    MongoExport后的负载均衡问题查询及解决:can't accept new chunks because there are still 2 deletes from previous migration
    MongoDB集群单mongos的问题总结
    Linux上不了网的几个排查点
    git忽略某些文件的几种方法
  • 原文地址:https://www.cnblogs.com/focus-z/p/11939541.html
Copyright © 2020-2023  润新知