廊坊地区,哪家公司提供专业的网站与APP定制服务?
摘要:廊坊网站建设,app开发定制的公司哪家好,wordpress同类软件,网站建设文化市场一、关键字static、const、extern、volatile作用 1、const 1.修饰常量 用const修饰的变量是不可变的&#
廊坊网站建设,app开发定制的公司哪家好,wordpress同类软件,网站建设文化市场一、关键字static、const、extern、volatile作用
1、const
1.修饰常量
用const修饰的变量是不可变的#xff0c;修饰后的变量只能使用#xff0c;不能修改。
2.修饰指针
如果const位于*的左侧#xff0c;eg#xff1a;const int* a#xff0c;则const就是用来修饰指针…一、关键字static、const、extern、volatile作用
1、const
1.修饰常量
用const修饰的变量是不可变的修饰后的变量只能使用不能修改。
2.修饰指针
如果const位于*的左侧egconst int* a则const就是用来修饰指针所指向的变量此时为常量指针即指针指向*a为常量 如果const位于*的右侧egint* const aconst就是修饰指针本身此时为指针常量即指针本身a是常量。
const int* p a; // 常量指针指针指向的内容不能变*p不能变
int* const p a; // 指针常量指针本身不能变 p不能变
3.修饰函数参数
用const修饰函数参数传递过来的参数在函数内不可以改变。
void func (const int n)
{n 10; // 编译错误
}
2、static (静是一种约束不能乱跑乱动)
1.修饰变量
1修饰局部变量
局部变量没有被static修饰 存储在栈中 自动初始值不固定
局部变量被static修饰 叫做局部静态变量存储在全局数据区 初始化为0
代码运行分析
子函数变量中不加static进行修饰
#include stdio.hvoid test()
{static int a 0;a;printf(%d , a);
}
int main()
{int i 0;for (i 0; i 8; i){test();}return 0;
} 子函数中加static进行修饰
#include stdio.hvoid test()
{static int a 0;a;printf(%d , a);
}
int main()
{int i 0;for (i 0; i 8; i){test();}return 0;
} 2修饰全局变量
全局变量定义在函数体外部在全局数据区分配存储空间且编译器会自动对其初始化。 全局变量没有被static修饰 整工程所有文件可以用这个全局变量其它文件使用时候需要extern外部声明也就是说其他文件不能再定义一个与其相同名字的变量了否则编译器会认为它们是同一个变量。
全局变量被static修饰静态全局变量仅对当前文件可见其他文件不可访问其他文件可以定义与其同名的变量两者互不影响。
static定义全局变量的作用在定义不需要与其他文件共享的全局变量时加上static关键字能够有效地降低程序模块之间的耦合避免不同文件同名变量的冲突且不会误使用。
2.修饰函数
在函数的返回类型前加上static就是静态函数。
静态函数只能在声明它的文件中可见其他文件不能引用该函数不同的文件可以使用相同名字的静态函数互不影响。
非静态函数可以在另一个文件中直接引用甚至不必使用extern声明。
3.C面向对象中static用法
(1)类内静态数据成员
作用实现多个对象共享数据的目标。
static 成员变量属于类不属于某个具体的对象即使创建多个对象也只为 m_total 下面程序中分配一份内存所有对象使用的都是这份内存中的数据。当某个对象修改了 m_total也会影响到其他对象。
class Student{
public:Student(char *name, int age, float score);void show();
public:static int m_total; //静态成员变量
private:char *m_name;int m_age;float m_score;
};
(2)使用方法
初始化静态成员变量
static 成员变量的内存既不是在声明类时分配也不是在创建对象时分配而是在类外初始化时分配。反过来说没有在类外初始化的 static 成员变量不能使用。
int Student::m_total 0;
静态成员变量访问
static 成员变量既可以通过对象来访问static 成员变量不占用对象的内存而是在所有对象之外开辟内存即使不创建对象也可以访问。具体来说static 成员变量和普通的 static 变量类似都在内存分区中的全局数据区分配内存。
