tommyyu 发表于 2022-7-29 09:51:01

这段代码为什么报错

请问这一段代码为什么报错,怎么改正,谢谢

jackz007 发表于 2022-7-29 10:04:13

本帖最后由 jackz007 于 2022-7-29 10:06 编辑

struct lottery {
      int x ;
}
. . . . . .
void c(lottery abc)
      标识符 lottery 没有使用 typedef 定义过,所以,不可以这样定义数据类型
      你只要这样定义结构:
typedef struct LOTTERY {
      int x ;
} lottery ;
      即可解决问题

番杰 发表于 2022-7-29 10:30:01

本帖最后由 番杰 于 2022-7-29 10:32 编辑

报错是提示你abc没有定义吧;

修改办法:

(1)void c(lottery abc)改成:void c(struct lotteryabc)

或者:

(2)struct lottery {...};改成:typedef struct{...}   lottery ;

tommyyu 发表于 2022-7-29 11:10:00

本帖最后由 tommyyu 于 2022-7-29 11:11 编辑

jackz007 发表于 2022-7-29 10:04
标识符 lottery 没有使用 typedef 定义过,所以,不可以这样定义数据类型
      你只要这样定义结 ...

我在一本通上面随便找的一段代码,他这个没有用typedef定义,在调用函数的时候也没有加struct,为什么还没有报错(之前学过的都忘光了{:10_266:} )

jackz007 发表于 2022-7-29 11:13:59

tommyyu 发表于 2022-7-29 11:10
我在一本通上面随便找的一段代码,他这个没有用typedef定义,在调用函数的时候也没有加struct,为什么 ...

      搞不懂你这本书是怎么回事,按照规范的语法,node 不是能代表 struct node,前者不是规范的数据类型标识,后者才是。

liuzhengyuan 发表于 2022-7-29 11:19:30

全部的代码,文字版发上来

tommyyu 发表于 2022-7-29 11:38:21

jackz007 发表于 2022-7-29 11:13
搞不懂你这本书是怎么回事,按照规范的语法,node 不是能代表 struct node,前者不是规范的数 ...

可是这个报错好像是right数组的问题啊,不是结构体传参的问题

临时号 发表于 2022-7-29 12:42:27

tommyyu 发表于 2022-7-29 11:38
可是这个报错好像是right数组的问题啊,不是结构体传参的问题

代码的文字版发上来,我帮你看看

tommyyu 发表于 2022-7-29 12:44:20

#include<iostream>
using namespace std;
struct lottery{
        int x;
};
int count;
int right;
void c(lottery abc) {
        int co = 0;
        for(int i = 0; i < 7; ++i)
                for(int j = 0; j <= i; ++j)
                        if(abc.x == right) ++co;
        if(co) count++;
}
int main()
{
        int n;
        cin>>n;
        for(int i=0;i<7;++i) cin>>right;
        lottery a;
        for(int i=0;i<n;++i)
        {
                for(int j=0;j<7;++j)
                {
                        cin>>a.x;
                }
                c(a);
        }
        for(int i=0;i<n;++i) cout<<count<<" ";
        return 0;
}

dolly_yos2 发表于 2022-7-29 13:02:40

仔细读一下报错信息,您代码中的变量名和标准库中的符号重名了。在命名空间 std 里已经定义了符号 right 和 count ,因此编译器无法确定您指代的是哪一个 right 或 count 。
修改方法:或者给变量换个名字,或者不要使用只从 std 引入需要的符号,或者显式指明 count 和 right 的所属命名空间。

柿子饼同学 发表于 2022-7-30 10:58:57

jackz007 发表于 2022-7-29 11:13
搞不懂你这本书是怎么回事,按照规范的语法,node 不是能代表 struct node,前者不是规范的数 ...

这个好像是c++
页: [1]
查看完整版本: 这段代码为什么报错