int main()
{
int i=3,j=5;
swap(&i,&j);
cout<<i<<","<<j<<endl; //5,3 实现两个变量的互换
system("pause");
return 0;
}
指针实现两个变量互换
程序分析:p,指向整数的指针;*p1指向i的指针,*p2指向j的指针,i,j实现互换内存。
4.3.传递变量的别名
因为用传递指针的方法比较麻烦,所以可以用传递别名的方法解决这个不足。
例1.12 使用“引入实参”实现两个变量的值的互换
#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
int temp;
temp = a;
a=b;
b=temp;
}
int main()
{
int i=3,j=5;
swap(i,j);
cout<<i<<","<<j<<endl; //5,3 实现变量的互换
system("pause");
return 0;
}
传递别名实现两个变量的互换
在C++调用函数时有两种传递数据的方式,一种是常用的方法:将实参的值传给形参,形参是实参的拷贝,这种方式称为传值方式调用。另一种是将实参的地址传给引用型形参,这时形参与实参是同一个变量,这种方式称为引用方式调用。
引用小结:引用其实就相当于python中的赋值操作,不会开辟新的内存空间,它只是复制了对象的引用,也就是说除了b这个名字之外,没有其他的内存开销。修改了a,也就二印象了b,同理,修改了b,也就影响了a。
1.3.8 内置函数
指定内置函数的方法很简单,只需在函数首行的左端加一个关键字inline即可。
例1.13 将函数指定为内置函数
#include<iostream>
using namespace std;
inline int max(int a,int b,int c) //这是一个内置函数,求3个整数中的最大者
{
if (b>a) a=b;
if (c>a) a=c;
return a;
}
int main()
{
int i=7,j=10,k=25,m;
m=max(i,j,k);
cout<<"max="<<m<<endl;
system("pause");
return 0;
}
程序分析:
调用函数需要时间,内置函数在编译时直接将所调用函数嵌入到其中;即原来是调用,现在是替换后直接使用;
使用内置函数可以节省运行时间,但却增加了目标程序的长度。加入一个函数4行调用10次,原来4行,那么现在是40行了,大大增加了main函数的长度。因此只有对于规模很小且使用频繁的函数,才可大大提高运行速度。
1.3.9 作用域运算符
即全局变量和局部变量;全局变量用"::变量名"表示,如"::a"表示全局作用域中的变量a。C++提供作用域运算符":: ",它能指定所需要的作用域。
#include<iostream>
using namespace std;
float a=13.5; //定义一个浮点型的全局变量a
int main()
{
int a=5;
cout<<a<<endl; //输出局部变量a的值
cout<<::a<<endl; //输出全局变量a的值
system("pause");
return 0;
}
程序分析:
在main函数中局部变量将屏蔽全局变量。
C++提供作用域运算符":: ",它能指定所需要的作用域。但应注意,不能用":: "访问函数中的局部变量。
1.3.10 字符串变量
双引号--->字符串,即多个字符
单引号--->字符,即单个字符
1.定义字符变量:
string string1; //定义string1位字符串变量
string string2="China"; //定义字符串string2同时对其初始化
//要使用string类的功能时,在开头应包含“string”头文件,即#include<string> 没有.h
2.字符串变量的赋值
复制代码
string0="Canada";
string2=string1;
string word="Then"; //定义并初始化字符串变量word
word[2]='a'; //修改序号为2的字符,修改后word的值为"Than"
复制代码
3.字符串变量的输入输出
cin<<string1;
cout>>string2;
4.字符串变量的运算
复制代码
string1=string2;
string string1="C++";
string string2="Language";
string1=string1+string2;
// ==,<,>,!=,>=,<=
复制代码
5.字符串数组
不仅可以用string定义字符串变量,也可以用string定义字符串数组。如:
复制代码
#include<iostream>
using namespace std;