学习:
1.深入理解了C++里引用:
A:引用的定义:数据类型名 &引用名=变量名;(引用不同于指针之处是:引用在声明的时候必须同时初始化)
B.引用只是变量的一个别名,在操作引用和操作原变量名的时候都是操作内存区域上的同一个区域。
C.引用的应用:
a.作为函数的参数参与传值,类似于c语言指针的作用。这里才明C语言中指针传值的优点:相对于通过形参传值,c指针是直接访问需要做变化的内存,并直接对齐做改,
而不是复制一份到目前开的函数栈中来。
b.引用作为函数返回值,也是为了避免复制产生临时变量而效率降低。函数返回值返回的引用的原变量不能是局部变量,那样会产生野引用的情况。
2.其余学习内容见代码注解:
我的代码:
#include<iostream> #include<algorithm> #include<vector> #include<cassert> //assert #include<ctime> #include<cstdlib> //rand(),srand() using namespace std; void rand_make(vector<int> &v){ //一个容器的引用 for(int i=0;i < 100;i++){ int x=((double)(rand())/RAND_MAX)*1000000; //取随机数。因为随机数函数rand()的最大随机数值可能只有2^15-1,所以用这种方法来取随机数 v.push_back(x); } } int main(void){ srand(time(0)); //一个程序只需要给一次种子<span id="transmark"></span> vector<int> v; rand_make(v); sort(v.begin(),v.end()); for(int i=0;i < v.size()-1;i++) assert(v[i] < v[i+1]); //assert(expresiion); cout << endl << RAND_MAX << endl; }
时间: 2024-12-06 19:29:42