本帖最后由 唯有一片蓝 于 2021-4-2 10:34 编辑
句柄的本质是一个结构体,而这个结构体的成员变量记录着某个大型操作的全部数据所需,像这样的结构体我们也可以称作控制体。 举个例子,如果我们要实现一个int类型数组的冒泡排序,那么我们可能需要的参数大致有2个,int类型数组及数组长度,如果写成结构体就如下所示:
- struct _intSort {
- int temp[3][3];
- int arrayLen;
- };
复制代码
接着我们要创建一个子函数用作冒泡排序的实例,形参就是这个结构体了,大致的程序如下所示:
- void bubble_sort(struct _intSort* intsort)
- {
- int i, j;
- int temp;
- for (i = 0; i < intsort->arrayLen; i++) {
- for (j = i + 1; j < intsort->arrayLen; j++) {
- if (intsort->temp[i] > intsort->temp[j]) { // 从小到大排序
- temp = intsort->temp[i];
- intsort->temp[i] = intsort->temp[j];
- intsort->temp[j] = temp;
- }
- }
- }
- }
复制代码
上述的代码中,函数的形参之所以是指针类型,目的是为了改变结构体成员temp的元素位置,所以必须传入指针类型的参数。经过冒泡排序后的结构体就可以被输出到命令窗口了,程序大致如下:
- int i;
- for (i = 0; i < intsort->arrayLen; i++) {
- printf("%d ", intsort->temp[i]);
- }
复制代码
到此,我们的例子结束了。这只是一个简单的案例,所以结构体中的成员只有2个,我们之所以用结构体作为变量,是因为体结构本身的优势在于1个结构体中包含多个不同类型的变量。
总的来说,句柄 = 控制体 = 结构体 = struct xxx {...};
|