从C语言到C++的进阶之C++的非类新特性(篇二)

1、输出输入使用“cout<<”和“cin>>”

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    
    
	int a;
	char ss[100];
	cout << "Input your name:\n";
	cin >> ss;
	cout << "Input your age:" << endl;  //endl就相当于换行 
	cin >> a;
	cout << "Hello, " << ss << "!Your are " << a << " old."; 
}

同时,需要包含的库文件是iostream,io代表输入输出,所以iostream就是输入输出流,其中还包含一些其他很基础的输入输出函数:
cin:标准输入istream类对象,cin使我们可以从设备读如数据。
cout;标准输出(standard output)的ostream类对象,cout使我们可以向设备输出或者写数据。
cerr:标准错误(standard error)的osttream类对象,cerr是导出程序错误消息的地方,它只能允许向屏幕设备写数据。
01

2、访问外部变量

在C++中,即使内部变量和外部变量同名,外部变量仍然能够被访问到,只要在变量名前冠以作用域分辨符“::”:

#include <iostream>
using namespace std;

int a = 111;
int main(int argc, char* argv[])
{
    
    
	int a = 314;
	cout << "Local a= " << a << endl;
	cout << "Global a= " << ::a << endl;
}

02

3、从指针到引用

在C++中,可以使用“&”运算符来声明引用另外一个变量,相当于给另个变量起了一个别名(化名)。

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    
    
	double a = 1.23456;
	double &b = a;  //给变量a取一个化名(别名)为b,然后就可以通过修改b来修改a的值了 
	b = 99.9;
	cout << "a的值为:" << a << endl; 
}

03
对于这样的引用,我们可以把它想象成一个形式上比较漂亮的指针,它的好处在于我们不用担心指针是否被初始化,也不用担心如何获取它的值。

4、引用与指针的比较

(1)在C++用别名(引用)

#include <iostream>
using namespace std;

void change(double &a, double b)
{
    
    
	a= 1314;
	b= 520;
}
int main(int argc, char* argv[])
{
    
    
	double x=1.11, y=2.22;
	change(x, y);
	cout << "x的值:" << x << endl;
	cout << "y的值:" << y << endl;
}

04

(2)在C++用指针

#include <iostream>
using namespace std;

void change2(double *a, double b)
{
    
    
	*a= 1314;  //改变指针所指向地址的数 
	b= 520;
}
int main(int argc, char* argv[])
{
    
    
	double x=1.11, y=2.22;
	change2(&x, y);  //指针传入值需要取址 
	cout << "x的值:" << x << endl;
	cout << "y的值:" << y << endl;
}

05
其结果是与使用引用一样的。

5、返回引用类型的函数

#include <iostream>
using namespace std;

int &biggest(int &a, int &b)
{
    
    
	if(a > b) 
		return a;  
	else 
		return b;
}
int main(int argc, char* argv[])
{
    
    
	int k=2, m=9, res;
	res= biggest(k, m);
	cout << "The biggest is:" << res << endl;
}

06

在判断最大值的函数中返回的是引用类型的数据,因此需要用&来定义函数 。
若此时若返回的是一个具体的数字而不是某引用类型数据,那编译器必然就会报错 ,因为返回值和函数类型不对应。
biggest函数若用C语言格式写,则是如下:

int *biggest(int *a, int *b)
{
    
    
	if(*a > *b)
		return a;
	else
		return b;
}

猜你喜欢

转载自blog.csdn.net/Viewinfinitely/article/details/111875375