zoukankan      html  css  js  c++  java
  • c语言速记2(存储类,运算符)

    1,存储类:

    通过特定的字符来定义变量和函数可见性(作用域)和生命周期

    1,auto存储类
    auto 存储类是所有局部变量默认的存储类并只能修饰局部变量
    例子:
    {
       int mount;
       或
       auto int month;
    }
    
    2,register存储类
    register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。
    寄存器只用于需要快速访问的变量,比如计数器。
    但定义 'register' 并不意味着变量将被存储在寄存器中,
    它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。
    例子:register登记表、登记员的意思,这里是寄存器
    {
       register int  miles;
    }
    
    3static
    static 存储类
    a,修饰全局变量或方法时候,作用域限制在当前文件中。
    b,修饰局部变量将不会随方法结束销毁重置
    例子:
    #include <stdio.h>
     
    /* 函数声明 */
    void func1(void);
     
    static int count=10;        /* 全局变量 - static 是默认的 */
     
    int main()
    {
      while (count--) {
          func1();
      }
      return 0;
    }
     
    void func1(void)
    {
    /* 'thingy' 是 'func1' 的局部变量 - 只初始化一次
     * 每次调用函数 'func1' 'thingy' 值不会被重置。
     */                
      static int thingy=5;
      thingy++;
      printf(" thingy 为 %d , count 为 %d
    ", thingy, count);
    }
    结果:
     thingy 为 6 , count 为 9
     thingy 为 7 , count 为 8
     thingy 为 8 , count 为 7
     thingy 为 9 , count 为 6
     thingy 为 10 , count 为 5
     thingy 为 11 , count 为 4
     thingy 为 12 , count 为 3
     thingy 为 13 , count 为 2
     thingy 为 14 , count 为 1
     thingy 为 15 , count 为 0
    
    
    4extern
    extern 存储类可用修饰方法和变量,即声明,指向具体定义的方法或变量,方便在不同文件使用。
    
    用于提供一个全局变量的引用,对所有文件可见。
    使用 extern 时,对于没有初始化的变量,会把变量名指向一个之前定义过的存储位置。
    extern 是用来在另一个文件中声明一个全局变量或函数。
    
    例子:
    ########support.c
    #include <stdio.h>
     
    extern int count;
    void write_extern(void)
    {
       printf("count is %d
    ", count);
    }
    
    ########main.c
    #include <stdio.h>
     
    int count ;
    extern void write_extern();
     
    int main()
    {
       count = 5;
       write_extern();
    }
    
    编译: gcc main.c support.c
    执行:./a.out
    结果:count is 5

    2,运算符:

    1,算术运算符
    +    把两个操作数相加     
    -    从第一个操作数中减去第二个操作数     
    *    把两个操作数相乘     
    /    分子除以分母    
    %    取模运算符,整除后的余数
    ++    自增运算符,整数值增加 1    
    --    自减运算符,整数值减少 1    
    
    2,关系运算符
    ==    是否相等
    !=    是否不相等
    >    是否大于    
    <    是否小于 
    >=    是否大于或等于
    <=
    
    3,逻辑运算符
    &&||
    
    4,位运算符
    &
    |
    ^
    
    5,赋值运算符
    =    简单的赋值运算符,把右边操作数的值赋给左边操作数    C = A + B 将把 A + B 的值赋给 C
    +=    加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数    C += A 相当于 C = C + A
    -=    减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数    C -= A 相当于 C = C - A
    *=    乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数    C *= A 相当于 C = C * A
    /=    除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数    C /= A 相当于 C = C / A
    %=    求模且赋值运算符,求两个操作数的模赋值给左边操作数    C %= A 相当于 C = C % A
    <<=    左移且赋值运算符    C <<= 2 等同于 C = C << 2
    >>=    右移且赋值运算符    C >>= 2 等同于 C = C >> 2
    &=    按位与且赋值运算符    C &= 2 等同于 C = C & 2
    ^=    按位异或且赋值运算符    C ^= 2 等同于 C = C ^ 2
    |=    按位或且赋值运算符    C |= 2 等同于 C = C | 2
    
    6,杂项运算符
    sizeof()    返回变量的大小。    sizeof(a) 将返回 4,其中 a 是整数。
    &    返回变量的地址。    &a; 将给出变量的实际地址。
    *    指向一个变量。    *a; 将指向一个变量。
    ? :    条件表达式    如果条件为真 ? 则值为 X : 否则值为 Y
    
    例子:
    int a = 4;
    int* ptr; //指针类型,即存放地址的变量
    
    /* & 和 * 运算符实例 */
    ptr = &a; //a的地址赋值给指针ptr printf("*ptr 是 %d ", *ptr);//指针变量前加*,表示指针指向的值。即a的值。
  • 相关阅读:
    代理的原理
    nodemon:让node自动重启
    http与https的区别
    Content-Type:几种常用数据编码格式
    vue ssr服务端渲染
    vue 实现文件上传和文件下载
    vue element-ui表格里时间戳转换成时间显示
    vue npm start 自动打开网页
    yearProgress.vue
    vuejs中class与style的绑定
  • 原文地址:https://www.cnblogs.com/straybirds/p/14762655.html
Copyright © 2011-2022 走看看