本文主要是介绍利用结构体作为函数参数时结构体指针的定义,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在利用结构体作为函数的参数进行传递时,容易犯的一个错误是将一个野指针传给函数导致错误。
#include <stdio.h>
#include <math.h>
#include <malloc.h>#define MAXSIZE 10typedef struct
{int r[MAXSIZE]; //用于存储要排序的数组,r[0]作为哨兵或者临时变量int length; //用于记录顺序表的长度
}SqList;void swap(SqList *L,int i,int j)
{int temp;temp=L->r[i];L->r[i]=L->r[j];L->r[j]=temp;
}//冒泡排序1
void Bubble_Sort0(SqList *L)
{int i,j;for(i = 0;i < L->length;i++){for(j = i+1;j<L->length;j++){if(L->r[i]>L->r[j]){swap(L,i,j);//交换两者的值}}}}int main(void)
{int i;int temp;#if 0SqList L;//定义的变量,系统会分配内存空间L.length = 10;temp = L.length;for(i = 0;i<L.length;i++){L.r[i] = temp--; //逆序赋值}Bubble_Sort0(&L); //冒泡排序法for(i = 0;i<L.length;i++){printf("r[%d] = %d.\n",i,L.r[i]); //顺序输出}#else
// SqList *L;//直接定义一个指针是没有指向的,是野指针,程序运行会出错SqList *L=malloc(sizeof(SqList)); //申请一个内存空间后有了指向,正常运行L->length = 10;temp = L->length;for(i = 0;i<L->length;i++){L->r[i] = temp--; //逆序赋值}Bubble_Sort0(L); //冒泡排序法for(i = 0;i<L->length;i++){printf("r[%d] = %d.\n",i,L->r[i]); //顺序输出}
#endif
}
这篇关于利用结构体作为函数参数时结构体指针的定义的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!