这个为什么报错了啊?

img

传地址 定义地址什么的应该都没有错啊 为什么报错了呢 这个错误类型是什么意思啊 应该怎么修改呢

注意梳理结构体的两种访问方式,什么时候用.什么时候用->

img

l是指针,结构体中要用->。

因为是结构指针,所以访问结构里的字段的时候,把.改为->,就可以了,修改了一下,如下:


#include <stdio.h>
#include <string.h>
#define max 10
typedef struct {
    char name[6];
    int num,grade;
} elem;

typedef struct {
    elem e[max];
    int length; //这个length的作用不知道是什么 ,我就把理解为有多生个学生信息把 
}L;

void insert (L * l,int i){
    
    int k;
    printf("add insert student information:\n");
    scanf("%d%s%d",&(l->e[i].num),l->e[i].name,&(l->e[i].grade));
    
    for(k=l->length;k>=i;k--){
        //l->e[k+1] = l->e[k];
        l->length++;
    }
}  

int main(void){
    L l;
    int i=0;
    
    printf("insert student information:\n");
    for(;i<4;i++){
        scanf("%d%s%d",&l.e[i].num,l.e[i].name,&l.e[i].grade);
        printf("insert student information:\n");
    }
//    scanf("%d",&i);
    insert(&l,i);
    l.length = i+1;
    for(i=0;i<l.length;i++){
        printf("%d %s %d\n",l.e[i].num,l.e[i].name,l.e[i].grade);
    }
    
    return 0;
}