qimujun
迷途的启木菌
采纳率90.9%
2019-08-18 22:43 阅读 902

我声明了的,为什么还显示error C2065: “p”: 未声明的标识符?

求大神看看哪里有问题,谢谢!

#include<stdio.h>
typedef struct st
{
    char name[10];
    int n;
    double score;
    struct st *next;
}lb;

int main(void)
{
    lb s1={"wanghu",4565,98.1,NULL};
    lb s2={"fsdg",6366,64.81,NULL};
    lb s3={"jfgjdf",6753,68.1,NULL};
    lb s4={"tcg",2546,95.7,NULL};
    lb *head=&s1;
    s1.next=&s2;
    s2.next=&s3;
    s3.next=&s4;
    s4.next=NULL;
    lb *p=head;
    while(p!=NULL)
    {
        printf("name:%s\nnumber:%d\nscore:%.2f\n\n",p->name,p->n,p->score);
            p=p->next;
    }
    return 0;
}

运行不了,显示我的p是没有声明的标识符。

1>------ 已启动生成: 项目: ghgfh, 配置: Debug Win32 ------
1>  190729.c
1>d:\重要的事情\ghgfh\ghgfh\190729.c(21): error C2275: “lb”: 将此类型用作表达式非法
1>          d:\重要的事情\ghgfh\ghgfh\190729.c(8) : 参见“lb”的声明
1>d:\重要的事情\ghgfh\ghgfh\190729.c(21): error C2065: “p”: 未声明的标识符
1>d:\重要的事情\ghgfh\ghgfh\190729.c(22): error C2065: “p”: 未声明的标识符
1>d:\重要的事情\ghgfh\ghgfh\190729.c(22): warning C4047: “!=”:“int”与“void *”的间接级别不同
1>d:\重要的事情\ghgfh\ghgfh\190729.c(24): error C2065: “p”: 未声明的标识符
1>d:\重要的事情\ghgfh\ghgfh\190729.c(24): error C2223: “->name”的左侧必须指向结构/联合
1>d:\重要的事情\ghgfh\ghgfh\190729.c(24): error C2065: “p”: 未声明的标识符
1>d:\重要的事情\ghgfh\ghgfh\190729.c(24): error C2223: “->n”的左侧必须指向结构/联合
1>d:\重要的事情\ghgfh\ghgfh\190729.c(24): error C2065: “p”: 未声明的标识符
1>d:\重要的事情\ghgfh\ghgfh\190729.c(24): error C2223: “->score”的左侧必须指向结构/联合
1>d:\重要的事情\ghgfh\ghgfh\190729.c(25): error C2065: “p”: 未声明的标识符
1>d:\重要的事情\ghgfh\ghgfh\190729.c(25): error C2065: “p”: 未声明的标识符
1>d:\重要的事情\ghgfh\ghgfh\190729.c(25): error C2223: “->next”的左侧必须指向结构/联合
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    J4cks0n J4cks0n 2019-08-19 10:31

    你可以先在上面声明再用
    lb *head=&s1;
    lb *p;
    。。。。。。。。。。

    p=head;
    
    或者你换个新的编译器
    
    点赞 评论 复制链接分享

相关推荐