首页 > 编程知识 正文

sqlist数据库,数据结构sqlist

时间:2023-05-03 14:47:19 阅读:160531 作者:1440

//顺序表l的结构2 typedef struct3{4} elemtype data [ maxsize ]; 5 int length; 6 )6) 6 }SqList; 7//创建顺序表9voidcreatelist(SQList*L,ElemType a[ ],int n ) 10 {11 int i; 12L=(sqlist* ) malloc (sizeof ) sqlist ); 13for(I=0; i n; I ) 14 L-data[i]=a[i]; 15 L-length=n; 16 ) 17//输出线性表: 18voiddisplist(sqlist*L ) 19 {20 int i; 21for(I=0; i L -length; I ) 22printf(“%d”,L-data[i]; 23printf(「n”; 24 )SqList *LSqList * L之间的差异:

概念:

a. *L是指针,全名是指针变量,是用于保存存储器地址的变量。 这里是指向顺序表,存储顺序表地址的变量。

b. * L是一个引用指针,它是c语言的重要扩展。 引用是原始变量的别名,引用变量本身没有自己的实际存储空间,对引用变量的操作就是对原始变量的操作。 此处的* L表示原始指针。

不同点:

两个共同点都指向顺序表l。

不同之处在于,在函数中更改指针自身指向的地址不会更改*L,而是更改* L

更改形状参数的内容进行使用需要引用,如果不需要更改子函数体的形状参数的值,则不需要引用。

* L是引用类型的指针,表示原始指针。 在函数中对指针的操作是对原始指针的直接操作,指针的内容和指针指向的地址都会发生变化。

这里需要巩固函数形式参数和实际参数的概念。 这需要我们保持冷静。

形式出现在函数定义中,可以在整个函数体内使用。 实参出现在主调函数中,进入被调函数后也不能使用实参。 函数调用时,主函数将实参的值传输给被调函数的形参,实现数据的传输。 然而,在该函数调用期间,数据传输是单向的,即数据仅从参与者传递到参考,而参考不返回参考。 我们即使在函数中改变形状参数的值,实际参数的值也不会改变。 这就是函数调用中的单向传值。

1.掌握引用的重点就是:在函数体当中改变了使用了引用的形参,实际上实参也跟着改变了,比如以上“建立顺序表的函数体”中的形参使用SqList * L,倘若不使用引用,顺序表中的数据是不会存在的,

13for(I=0; i n; I )

14 L-data[i]=a[i];

15 L-length=n;

3358 www.Sina.com/sqlist * l 3358 www.Sina.com/sqlist * l 3358 www.Sina.com /

即这三行代码实际上是没有起作用的,所以在建立顺序表或者要对顺序表进行删除数据等等需要进行改变实参的操作时,都必须使用引用,只有使用了引用,形参才会传到实参。这就是为什么我们在输出顺序表的时候,函数体当中的形参(一般形参由实参改为形参http://www.Sina.com/http://www.Sina.com /

)我们并没有使用引用,而只是用了指针,因为输出顺序表数据,我们并不需要做任何改变顺序表实体内部中的数据操作,而只是将其数据输出,在此函数体的形参中,我们可以尝试把形参加上引用(为什么不能改变函数中所指对象的地址呢?

)实际输出效果是一样的。实际上是一个变量,这里是属于指针传递的格式参数。 指针传递将在编译过程中从参数函数传递的参数值,即参数的地址存储在堆栈中。 这意味着参数指针是一个独立的指针,具有自己的内存地址。 其中存储了参数的地址和参数。 参数指针和参数地址之间是两个独立的,变更*L所指地址时,并不是对参数主体进行操作,而是对参数进行了变更

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。