二进制 + 的无效操作数(有 'struct student' 和 'int')
invalid operands to binary + (have 'struct student' and 'int')
我正在尝试 return 函数中的结构变量,我创建了一个函数 getInformation 来获取数据,但我收到一条错误消息“二进制操作数无效 +(具有 'struct student' 和 'int')", 是什么意思?我该如何解决?
int main(){
struct student *s1;
int n;
printf("Enter how many data: ");
scanf("%d", &n);
s1 =(struct student *) malloc(n *sizeof(struct student));
if ( s1 == NULL)
{
printf("memory not available");
return 1; // exit(1); stlib.h
}
for(int i = 0; i < n; i++ )
{
printf("\nEnter details of student %d\n\n", i+1);
*s1 = getInformation();
}
}
struct student getInformation(struct student *s1,int i)
{
struct student s;
scanf("%d", (s+i)->age);
printf("Enter marks: ");
scanf("%f", (s+i)->marks);
return s;
}
这是我的结构
struct student {
int age;
float marks;
};
错误原因:scanf("%d",(s+i)->age);
。这里,s
不是指向结构的指针。所以,添加 i
会给你错误,因为 s
和 i
都是不同的类型( s
是 struct student
类型,但 i
是类型 int
).
#include <stdio.h>
#include<stdlib.h>
struct student
{
int age;
float marks;
};
struct student getInformation(struct student *s1);
int main()
{
struct student *s1;
int n;
printf("Enter how many data: ");
scanf("%d", &n);
s1 = malloc(n * sizeof(struct student));
if (s1 == NULL)
{
printf("memory not available");
return 1; // exit(1); stlib.h
}
for (int i = 0; i < n; i++)
{
printf("\nEnter details of student %d\n\n", i + 1);
*(s1+i) = getInformation(s1+i); //Changed the function call
}
for(int i=0;i<n;i++)
{
printf("%d ",s1[i].age);
printf("%f ",s1[i].marks);
}
}
struct student getInformation(struct student *s1)
{
scanf("%d", &(s1->age));
printf("Enter marks: ");
scanf("%f", &(s1->marks));
return *s1;
}
输出为:
Enter how many data: 3
Enter details of student 1
23
Enter marks: 67
Enter details of student 2
34
Enter marks: 99
Enter details of student 3
24
Enter marks: 56
23 67.000000 34 99.000000 24 56.000000
我正在尝试 return 函数中的结构变量,我创建了一个函数 getInformation 来获取数据,但我收到一条错误消息“二进制操作数无效 +(具有 'struct student' 和 'int')", 是什么意思?我该如何解决?
int main(){
struct student *s1;
int n;
printf("Enter how many data: ");
scanf("%d", &n);
s1 =(struct student *) malloc(n *sizeof(struct student));
if ( s1 == NULL)
{
printf("memory not available");
return 1; // exit(1); stlib.h
}
for(int i = 0; i < n; i++ )
{
printf("\nEnter details of student %d\n\n", i+1);
*s1 = getInformation();
}
}
struct student getInformation(struct student *s1,int i)
{
struct student s;
scanf("%d", (s+i)->age);
printf("Enter marks: ");
scanf("%f", (s+i)->marks);
return s;
}
这是我的结构
struct student {
int age;
float marks;
};
错误原因:scanf("%d",(s+i)->age);
。这里,s
不是指向结构的指针。所以,添加 i
会给你错误,因为 s
和 i
都是不同的类型( s
是 struct student
类型,但 i
是类型 int
).
#include <stdio.h>
#include<stdlib.h>
struct student
{
int age;
float marks;
};
struct student getInformation(struct student *s1);
int main()
{
struct student *s1;
int n;
printf("Enter how many data: ");
scanf("%d", &n);
s1 = malloc(n * sizeof(struct student));
if (s1 == NULL)
{
printf("memory not available");
return 1; // exit(1); stlib.h
}
for (int i = 0; i < n; i++)
{
printf("\nEnter details of student %d\n\n", i + 1);
*(s1+i) = getInformation(s1+i); //Changed the function call
}
for(int i=0;i<n;i++)
{
printf("%d ",s1[i].age);
printf("%f ",s1[i].marks);
}
}
struct student getInformation(struct student *s1)
{
scanf("%d", &(s1->age));
printf("Enter marks: ");
scanf("%f", &(s1->marks));
return *s1;
}
输出为:
Enter how many data: 3
Enter details of student 1
23
Enter marks: 67
Enter details of student 2
34
Enter marks: 99
Enter details of student 3
24
Enter marks: 56
23 67.000000 34 99.000000 24 56.000000