函数中的引用和指针,static关键字:
// ReferenceTest1.cpp : 定义控制台应用程序的入口点。
//
//函数中的引用和指针,static关键字
#include "stdafx.h"
int *f(int * x)
{
(*x)++;
return x;
}
int &g(int &x)
{
x++;
return x;
}
int &h()
{
int q =7;
return q;
}
int &k()
{
//static关键字是用来说明生存期和作用域的,所以可以多次赋值,可以声明是不赋值
/*Static 定义变量
变量有两个属性,生存期和作用域。定义在函数外部是全局变量,生存期是整个程序运行到结束,作用域也是整个程序。在同一个文件中可以调用
定义在函数内部是局部变量,生存期是整个程序运行到结束(对于static),而作用域只是函数被调用的这个过程。也就是说不能在函数外调用它
*Static 定义函数
这个函数只能在同一个文件中被调用
*Static 类中定义成员函数
这个函数不能访问非静态数据成员
*Static 类中定义成员变量
对类的所有对象都只有一个实例,且可以直接有类名来调用
*/
static int y ;
y=3;
return ++y;
}
void increment(int* &i)
{
i++;//这里不是i的值+1.而是指针本身增加int*个单位
}
int _tmain(int argc, _TCHAR* argv[])
{
int a=0;
//下面两句具有相同的效果
int *returnValue = f(&a);
int &returnNum =g(a);
//下面一句是常量引用
//int &returnNum =g(3);//非常量引用的初始值必须为左值,改成g(const int&)就可以了
a;//这里的a的值是2,
int q; //q值没有变化,是一个没有初始化的值
int &ke = h();//正确 ke=7
//int ke = h();//错误 “ke”:“int”与“int &”的间接寻址级别不同
int &kee =k();//正确 ke=7
//int kee = k();//error C2040: “kee”:“int”与“int &”的间接寻址级别不同
//extern int y; //y值不能在函数外部调用,即使是static修饰,是一个没有初始化的值
//下面测试指针的引用
int*i= 0;
i;//=0
increment(i);
i;//=4
return 0;
}