这段代码为什么报错
请问这一段代码为什么报错,怎么改正,谢谢 本帖最后由 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:32 编辑
报错是提示你abc没有定义吧;
修改办法:
(1)void c(lottery abc)改成:void c(struct lotteryabc)
或者:
(2)struct lottery {...};改成:typedef struct{...} lottery ; 本帖最后由 tommyyu 于 2022-7-29 11:11 编辑
jackz007 发表于 2022-7-29 10:04
标识符 lottery 没有使用 typedef 定义过,所以,不可以这样定义数据类型
你只要这样定义结 ...
我在一本通上面随便找的一段代码,他这个没有用typedef定义,在调用函数的时候也没有加struct,为什么还没有报错(之前学过的都忘光了{:10_266:} ) tommyyu 发表于 2022-7-29 11:10
我在一本通上面随便找的一段代码,他这个没有用typedef定义,在调用函数的时候也没有加struct,为什么 ...
搞不懂你这本书是怎么回事,按照规范的语法,node 不是能代表 struct node,前者不是规范的数据类型标识,后者才是。 全部的代码,文字版发上来 jackz007 发表于 2022-7-29 11:13
搞不懂你这本书是怎么回事,按照规范的语法,node 不是能代表 struct node,前者不是规范的数 ...
可是这个报错好像是right数组的问题啊,不是结构体传参的问题 tommyyu 发表于 2022-7-29 11:38
可是这个报错好像是right数组的问题啊,不是结构体传参的问题
代码的文字版发上来,我帮你看看 #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;
} 仔细读一下报错信息,您代码中的变量名和标准库中的符号重名了。在命名空间 std 里已经定义了符号 right 和 count ,因此编译器无法确定您指代的是哪一个 right 或 count 。
修改方法:或者给变量换个名字,或者不要使用只从 std 引入需要的符号,或者显式指明 count 和 right 的所属命名空间。 jackz007 发表于 2022-7-29 11:13
搞不懂你这本书是怎么回事,按照规范的语法,node 不是能代表 struct node,前者不是规范的数 ...
这个好像是c++
页:
[1]