函数中的引用和指针,static关键字

函数中的引用和指针,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;
}


 

你可能感兴趣的:(函数中的引用和指针,static关键字)