c/C++ 函数参数返回值的深入理解
2011-07-17 18:24
330 查看
函数形参分为:值类型,引用类型。 值类型分为 值类型和指针函数默认是有栈大小的 函数栈默认1-2M编译器自动分配,作用参数压栈,函数返回值临时变量创建。函数递归时断点保护,变量保护。由此可以大致计算函数可以递归调用的次数。例如下面的程序
struct stuStudent { int num[1024]; };
void print(stuStudent b) { cout<<a<<endl; a++; print(b); } int main() { stuStudent st; cout<<sizeof(st)<<endl; system("pause"); print(st); system("pause"); return 0; } 此函数递归调用500次 500*1024*4 = 2M
其次你还需要明白下面的几点:
先把编译和运行时搞清楚! 形参没空间,只是为了确定原型,以便在函数调用时,为实参分配空间做准备 ************** 实参在运行时堆栈中分配空间,如果是数组,传递的是指针// 局部变量的话,一般是不分配空间的,它们位于寄存器中 局部数组的话,空间是预先分配的,位于数据段中,调用函数时(此函数中定义),才将数组拷贝至运行时堆栈 当然,你声明成static就不copy了
那么你在看看下面的程序:vector<int> Inited() { vector<int> ve; for(int i =0;i<1024*1024*10;i++) ve.push_back(i); return ve; }int main() { vector<int> ve = Inited(); system("pause"); return 0; }这个程序在调用过程中不会出现任何问题。
关键就在vector这个数据结构中,他内部有个数组的首指针。是动态管理内存的,分配在堆上面的,所以没有问题
可以这样验证cout<<sizeof(ve); 结果输出12
相关文章推荐
- 深入理解C++中函数参数——传值与传址详解
- 深入理解C++中函数参数——传值与传址详解
- 【转】深入理解C++的动态绑定和静态绑定 & 不要重定义虚函数中的默认参数
- 深入理解C++中函数参数——传值与传址详解
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- C/C++ 函数参数和返回值传递机制
- C++引用(作为函数参数和返回值)
- 深入解析C++中的函数模板和函数的默认参数
- [李景山php] 深入理解PHP内核[读书笔记]--第四章:函数的实现 --函数的参数
- c++ const: const 变量, const 输入参数, const 返回值, const 成员函数
- c++只要基类有虚函数,子类同名同参数同返回值同属性的函数默认都是虚函数
- 深入理解javascript函数系列第二篇——函数参数
- [李景山php] 深入理解PHP内核[读书笔记]--第四章:函数的实现 --函数的参数-1
- C/C++杂记:深入理解数据成员指针、函数成员指针
- 深入理解PHP内核(六)函数的定义、传参及返回值
- 深入理解c++成员函数
- C++函数的参数传递、返回值及函数声明
- C++函数参数取默认值的深入详解
- c++ 深入理解虚函数