zoukankan      html  css  js  c++  java
  • static、const、extern等关键字

    • static

    参考:https://blog.csdn.net/guotianqing/article/details/79828100

       http://c.biancheng.net/view/2227.html

    static变量存在全局数据区,定义时若未赋值,会自动初始化为0。

    1)静态局部变量

      static修饰局部变量时,作用域为定义它的函数内。

      函数返回后,静态局部变量值不变。

     1 #include<stdio.h>
     2 void fun()
     3 {
     4         static i=2;
     5         i++;
     6         printf("i = %d
    ",i);
     7 }
     8 
     9 void main()
    10 {
    11         fun();
    12         fun();
    13 }

    运行结果:

    i = 3
    i = 4

    2)静态全局变量

      静态全局变量的作用域在本文件内,其他文件不能访问。所以其他文件可以定义同名变量

     3)类的静态成员

      ①静态成员变量

        静态成员变量在初始化时分配内存空间,所以不能再类内部定义。初始化时不能加static

         静态成员变量不属于任何对象,属于整个类,可直接用类进行操作。

      ②静态成员函数

        静态成员函数不属于任何对象(因此没有this指针),属于整个类,可直接用类进行操作。

        非普通成员函数可以任意地访问静态成员函数和静态数据成员。

        静态成员函数没有 this指针,不知道指向哪个对象,无法访问对象的成员变量,也就是说静态成员函数不能访问普通成员变量,只能访问静态成员变量。

    • const
    1)修饰指定的变量不能被修改
    const int a = 5;/*a的值一直为5,不能被改变*/
    const int b; b = 10;/*b的值被赋值为10后,不能被改变*/
    int const *ptr;
    const int *ptr; /*ptr为指向整型常量的指针,ptr的值可以修改,但不能修改其所指向的值*/
    int *const ptr;/*ptr为指向整型的常量指针,ptr的值不能修改,但可以修改其所指向的值*/
    const int *const ptr;/*ptr为指向整型常量的常量指针,ptr及其指向的值都不能修改*/
          总结:若const位于*号左侧,则const修饰的是指向的变量;若const位于*号右侧,则const修饰的是指针不可修改;
    所以int const* ptr和const int *ptr情况一样。
    2)修饰函数形参,形参只能在调用时赋值,不能在函数体内修改。
    3)修饰函数返回值不能被修改。如键盘输入的值const *str=getstr();
    4)类的有些成员函数不改变成员变量,只获取成员变量,是“只读”函数,这时可把该成员函数加上const进行标识。
    eg:
     1 class Point
     2 {    
     3     int xVal, yVal;
     4 public:
     5     int GetY() const;
     6 }
     7 int Point::GetY() const   //实现时也必须一样的方式,后面加const
     8 {
     9     return yVal;
    10 }
    只读函数既不能改变yVal的值,也不能调用会改变yVal的函数,只能调用const函数。
    不能把const放在前面,那样就返回值变成了固定的,意义不同了。

  • 相关阅读:
    C语言main函数参数解析代码模板
    C语言函数指针复习小程序
    反转链表
    (Mingw32环境下)C语言使用库函数分配内存,按指定字节对齐
    Scrum meeting 3
    胆大妄为【DDWW】 Scrum meeting 2
    胆大妄为【DDWW】 Scrum meeting 1
    胆大妄为【DDWW】 《实验八 团队作业4:团队项目需求建模与系统设计》
    胆大妄为【DDWW】 实验七 团队作业3:团队项目需求分析与原型设计
    胆大妄为【DDWW】 实验六 团队作业2 :西北师范大学毕业生就业信息管理系统
  • 原文地址:https://www.cnblogs.com/keepdoing123/p/10636492.html
Copyright © 2011-2022 走看看