C++基础之引用与指针的区别与联系、常引用使用时…
2018-06-17 22:18:42来源:未知 阅读 ()
1 #include<iostream> 2 using namespace std; 3 4 5 int main() 6 { 7 int a = 10; 8 int& n = a; 9 cout<<a<<endl; 10 cout<<n<<endl; 11 cout<<&a<<endl; 12 cout<<&n<<endl; 13 14 return 0; 15 }
程序的运行结果为:
1.一个变量可以有多个别名2.引用必须初始化3.引用只可以在变量初始化的时候引用一次,之后不可以在引用其他的变量(这个想要引用其他的变量几乎是无法实现,反正我没办法)
1 int main() 2 { 3 int d1 = 4; 4 const int & d2 = d1; 5 d1 = 5; // d1改变d2的值也会改变。 6 // d2 = 6; // 不能给常量(不能被修改的量)赋值 7 const int d3 = 1; 8 const int & d4 = d3; 9 // int&d5 = d3; 10 const int & d6 = 5; // 常量具有常性,只有常引?可以引?常量 11 double d7 = 1.1; 12 // int& d8 = d7; //d7是double类型,d8是int,d7赋值给d8时要生成一个临时变量 13 //也就是说d8引?的是这个带有常性的临时变量,所以不能赋值。 14 const int& d9 = d7; 15 return 0; 16 }
1 #include<iostream> 2 using namespace std; 3 #include <Windows.h> 4 struct BigData 5 { 6 int array [1000]; 7 }; 8 void DealBigData1(BigData& x) 9 { 10 x.array[0] = 0; 11 x.array[1] = 1; 12 x.array[2] = 2; 13 } 14 void DealBigData2 (BigData x) 15 { 16 x.array [0]= 0; 17 x.array [1]= 1; 18 x.array [2]= 2; 19 } 20 void TestReference() 21 { 22 BigData bd ; 23 int begin = GetTickCount (); 24 for (int i = 0; i < 1000000; ++i ) 25 { 26 DealBigData1(bd); 27 } 28 int end = GetTickCount (); 29 cout<<"cost time:" <<end - begin<<endl ; 30 begin = GetTickCount (); 31 for (int i = 0; i < 1000000; ++i ) 32 { 33 DealBigData2(bd); 34 } 35 end = GetTickCount (); 36 cout<<"cost time:" <<end - begin<<endl ; 37 } 38 int main() 39 { 40 TestReference(); 41 return 0; 42 }
1 int& Add (int d1, int d2) 2 { 3 int ret = d1 + d2; 4 return ret ; 5 } 6 void test() 7 { 8 int a = 3, b = 4; 9 int c = Add( a, b ); 10 cout<<"c:" <<c<< endl; 11 }
1 int Add1 (int a, int b) 2 { 3 int ret = a + b; 4 return ret; 5 } 6 int& Add2(int& a, int b) 7 { 8 int ret = a + b; 9 return ret; 10 } 11 void test1() 12 { 13 int ret = Add1(1, 2); 14 cout<<"ret:" <<ret<< endl; 15 } 16 void test2() 17 { 18 int a = 3, b = 4; 19 int c = Add2( a, b ); 20 cout<<"c:" <<c<< endl; 21 } 22 int main () 23 { 24 test1(); 25 test2(); 26 return 0; 27 }
1.不要返回?个临时变量的引?。
2. 如果返回对象出了当前函数的作?域依旧存在,则最好使?引?返回,因为这样更?效
1. 引?只能在定义时初始化?次,之后不能改变指向其它变量(从??终);指
针变量的值可变。
2. 引?必须指向有效的变量,指针可以为空。
3. sizeof指针对象和引?对象的意义不?样。 sizeof引?得到的是所指向的变量的
??,?sizeof指针是对象地址的??。
4. 指针和引??增(++)?减(--)意义不?样。
5. 相对??,引??指针更安全。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:P3399 丝绸之路
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash