l.elem和l_> elem的区别
时间: 2023-09-25 11:06:40 浏览: 360
### 回答1:
l.elem和l_->elem的区别在于前者是通过对象l来访问其成员变量elem,而后者是通过指针l_来访问指向对象l的成员变量elem。这种语法区别是因为指针访问成员变量需要使用箭头操作符(->),而非指针访问成员变量需要使用点操作符(.)。
### 回答2:
l.elem是指结构体变量l所指向的结构中的elem成员,通常使用点运算符访问结构体成员。
l->elem是指指针变量l所指向的结构中的elem成员,通常使用箭头运算符访问通过指针访问结构体成员。
区别在于l.elem是直接访问结构体的成员,而l->elem是通过指针访问结构体的成员。使用指针访问结构体成员的方式适用于结构体变量被封装在指针中的情况,通常在动态内存分配中使用。在结构体指针的操作中,指针通过箭头运算符可以直接访问结构中的成员,而不需要通过临时对象。
因此,如果使用l.elem,则l必须是一个结构体类型的变量,而如果使用l->elem,则l必须是一个指向结构体类型的指针。通过这样的方式,可以根据需要选择合适的方式来访问结构体中的成员。
相关问题
while (!FilePtr.eof()) //FilePrt.eof()读到文件结束符时返回true,并结束循环。 { //表示将文件流对象由FilePrt依次按顺序读到以下变量中 FilePtr >> L.elem[i].id >> L.elem[i].name >> L.elem[i].price >> L.elem[i].producer >> L.elem[i].store; i++; }是什么意思
这段代码是从文件流 `FilePtr` 中读取信息,并将它们存储到一个结构体数组 `L.elem` 中。`while(!FilePtr.eof())` 的作用是判断是否已经读到了文件的结束符,如果没有,则继续读取文件中的内容。每次循环中,`FilePtr >> L.elem[i].id >> L.elem[i].name >> L.elem[i].price >> L.elem[i].producer >> L.elem[i].store;` 这一行会依次读取文件中的 `id`、`name`、`price`、`producer` 和 `store` 这五个信息,并将它们存储到 `L.elem[i]` 这个结构体变量中。最后,`i++` 的作用是将数组下标 `i` 加 1,以便存储下一条记录。
int Parition (Sqlist L,int low,int high) { int temp = L.elem[low]; L.elem[0] = L.elem[low]; while(low < high&&L.elem[high]>=temp) { high--; L.elem[low] = L.elem[high]; } while(low < high&&L.elem[low]<=temp) { low++; L.elem[low]=L.elem[high]; } L.elem[low] = L.elem[0]; return 0; }
这是一个实现快速排序中的划分函数(Partition Function)的代码。
函数的作用是将线性表 L 中下标从 low 到 high 的元素按照关键字划分成两部分,使得左边的元素都小于等于某个值,右边的元素都大于等于该值,然后返回该值在线性表中的位置。
具体实现方法是:选取第一个元素作为基准值 temp,将其存放在一个临时变量中,然后将 L.elem[low] 赋值给 L.elem[0],L.elem[low] 就变成了一个空位,用它来存放后面交换过来的元素。
接下来,用两个指针 low 和 high 分别从表的两端开始向中间扫描。首先从 high 指针开始,往前找到第一个小于 temp 的元素,将其放到 L.elem[low] 中;然后从 low 指针开始,往后找到第一个大于 temp 的元素,将其放到 L.elem[high] 中。重复这个过程直到 low 和 high 指针相遇,此时 temp 的位置就是 low 指针所在的位置,将其放回到 L.elem[low] 中即可。
该函数的时间复杂度为 O(n),其中 n = high - low + 1。