#include<stdio.h>
int main()
{
struct abc
{
int a;
float b;
char c;
double d;
};
int i;
struct abc s[4] = {{1, 2, 3},
{2, 3, 4},
{3, 4, 5},
{4, 5, 6}};
printf("a = %p\n", s[1]);
printf("a + 1 = %p\n", s[i]+1);
}错误:二进制+的操作数无效(具有‘struct abc’和‘int’)
发布于 2020-08-27 11:56:09
错误:二进制+的操作数无效(具有‘struct abc’和‘int’)
这是因为s[i]是一个结构(abc)。您不能将结构添加到int。您想要访问的是该数组的下一个结构,您可以通过s[i + 1]进行访问
你的代码还有一些其他的问题。
{1, 2, 3} -该结构有4个成员,但您只初始化了3个-需要再提供一个数字。4,因为编译器可以通过初始化代码来解决它。printf也不正确:printf("a = %p\n", s[1]); -你不能这样打印整个结构。如果只想打印第一个结构的成员地址,则使用printf("a = %d\n", s[1].a);;否则,如果要打印地址,则需要使用printf("a = %p\n", &s[1]);发布于 2020-08-27 11:59:57
几个问题:
你的结构有4个成员;你像3.
printf("a = %p\n", s[1]);一样实例化它,你正在访问数组索引1处的元素。(struct abc类型的。根据我所看到的,您正在尝试打印特定元素的地址,您可以使用指针算法来执行此操作:
printf("%p",(s+i));或使用&来指定您想要该元素的地址:printf("%p",&s[i]);
i,但没有给它赋值,因此它将在您的计算机的ram中具有一些garbage value。在编写代码时,最好总是声明和初始化变量:int i = 0;
发布于 2020-08-27 12:05:56
该错误显示“invalid operands to binary + (have‘struct abc’and‘int’)”,这意味着您正在尝试将整数添加到结构中。我们可以使用索引来访问数组元素。例如s,s1 ...
如果s是整数数组,那么s,s1 ...每一个都代表整数。在你的程序中,s是struct abc的数组,所以s,s1 ...每个都代表struct abc。
你的程序中有一些问题,如下所示。
下面是程序。
int main()
{
struct abc
{
int a;
float b;
char c;
double d;
};
int i;
struct abc s[4] = {{1, 2, 'a', 3},
{2, 3, 'b', 4},
{3, 4, 'c', 5},
{4, 5, 'd', 6}};
for(i = 0; i < 4; i++) {
printf("a = %p\n", &s[i]);
}
}https://stackoverflow.com/questions/63608888
复制相似问题