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放在前面,那样就返回值变成了固定的,意义不同了。

  • 相关阅读:
    ArcGIS三种方式打断相交线------Feature To Line工具
    ArcGIS三种方式打断相交线------Planarize Lines工具
    3种方法快速制作tpk文件 [转]
    将oracle冷备份恢复到另外一个数据库实例中
    常用ArcGIS for Silverlight 开发API介绍
    Bear + Reminders 是完美的Thing 3 的替代品
    2019科技盛会汇总
    电子产品使用感受之——为什么我把Apple Watch S2 升级到了 S4?
    我了解到的新知识之——电热水器用电安全
    我了解到的新知识之----遇到路由器DNS被篡改我该怎么办?
  • 原文地址:https://www.cnblogs.com/keepdoing123/p/10636492.html
Copyright © 2011-2022 走看看