zzl-jy 发表于 2022-2-16 19:21:43

结构体在函数中传递问题

#include <stdio.h>

#define MAX 10
typedef struct{
        int data;
        int length;
}SqList;

void Init(SqList *L)
{
        (*L)->length=0;//编译不通过,为什么?麻烦大神解释下 (正确的:L->length=0)
       
}
int main()
{
        SqList L;
        Init(&L);
        return 0;
       
}

ckblt 发表于 2022-2-16 19:41:01

L->length = 0相当于(*L).length = 0
如果你(*L)->length = 0;的话 那就相当于(**L).length = 0就报错了

jackz007 发表于 2022-2-16 22:47:11

    由于 L 是指向结构体的指针,所以,访问结构体成员 lengtrh
    (*L) . length=0 ;
    L -> length = 0 ;
    以上两种写法都是正确的。这个知识近乎于规定,没有什么道理好讲。

2736946915 发表于 2022-2-16 23:25:13

本身就是指针,还做解引用干嘛,不过推荐用&,阅读方便

jhq999 发表于 2022-2-17 12:39:08

2736946915 发表于 2022-2-16 23:25
本身就是指针,还做解引用干嘛,不过推荐用&,阅读方便

c语言没有引用,c++才有
页: [1]
查看完整版本: 结构体在函数中传递问题