1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 从C语言到C++的进阶之C++的非类新特性(篇二)

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

时间:2020-09-12 04:36:15

相关推荐

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

文章目录

1、输出输入使用“cout<<”和“cin>>”2、访问外部变量3、从指针到引用4、引用与指针的比较5、返回引用类型的函数

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是导出程序错误消息的地方,它只能允许向屏幕设备写数据。

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;}

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; }

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

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;}

(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;}

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

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;}

在判断最大值的函数中返回的是引用类型的数据,因此需要用&来定义函数 。

若此时若返回的是一个具体的数字而不是某引用类型数据,那编译器必然就会报错 ,因为返回值和函数类型不对应。

biggest函数若用C语言格式写,则是如下:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。