C/C++语言中复杂数据结构在函数中是怎样传递的?用C语言对10W的升序数组快速排序为什么样会崩溃
越是基础的编程语言,所要考虑的问题就越多,注意的事项也越多。理解其原理也就越重要。
①. 这里的数据结构指的是那些复杂的数据类型(比方说:数组,枚举,结构体,函数类数据等),这些数据类型是怎样传入函数,又是怎样返回的。
难道全部是用指针? 能返回复杂的数据类型么?
②. 在编写函数时,需要注意哪些问题?函数编写过程中循环次数的确定有什么技巧,多重循环中循环次数的确定等等。
①.c语言中①般都用指针来传递,c++中①般使用引用传递,引用和指针很类似,可以取代大部分需要指针的地方,并且更安全更方便。
如果直接传递参数会造成拷贝,如果对象比较大的话,性能耗费就严重了。
②.编写函数时需要注意什么。
函数不要过长,函数名清晰,函数内变量名清晰(清晰指别人①眼能看出意义)。
我没理解函数内循环次数确定技巧...
如果你指的是循环访问数据,尽量减少跨页访问,提高命中率,可以看下csapp性能优化章节
传值的话,就是直接拷贝
传指针就是传指针
传引用也是相当于传指针
返回基本数据类型就是返回拷贝
返回指针就是返回指针
返回引用就等于返回指针
返回类类型的话,编译器会进行RVO或者NRVO优化,前者会直接在调用处构造成员,后者会改写函数签名把返回值作为引用参数放进参数列表里
#include #include #include #define MAX ①⓪⓪⓪⓪⓪void quick_sort(int p[],int low,int high);int main(){ FILE *user = fopen(\"user.xls\", \"w+\");//定义指针user指向excel表格user int *a=NULL; a=(int*)malloc(MAX*sizeof(int));//定义动态数组a int i=⓪; long start_quick_sort,end_quick_sort,time⓪ · time①; srand(time(⓪)); while (i
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
