数据结构-使用C语言

来源:百度知道 编辑:UC知道 时间:2024/06/06 00:08:56
顺序表操作实现的时候,初始化的 操作方法如下:
void listinitiate(seqlist *L)
{L->size=0;}
而在求当前数据元素个数的时候
void listlength(seqlist L)
{return L.size;}
为什么一个加了星号,一个没有加星号呢??那表示什么意思,有事什么不同么???谢谢高手回答啊

加*表示是指针,即函数用的是传地址,这样参数在函数里面被修改后是可以保存的。要初始化当然需要吧这样了

而求当前数据元素个数的时候,只是告诉函数有这样一个表,而对表本身不需要做任何修改,就不需要传地址,就是不加*,传值,这也保证了表的安全性,以免被修改

有星号得是传地址方式:地址中的值可以被函数改变
没星号的是传值方式:代表改值的地址在函数返回后不会被改变

好好学一下C语言的指针,自然就明白了。看的时候要耐心一点啊。只有你自己真正把指针搞明白了,碰到指针时就不怕了

seqlist *L 是创造了一个seqlist类的指针,指向该类的对象。
seqlist L 是创造了一个seqlist类的对象实例,故不需要加星号。