首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在c++中使用结构数组调用下一个元素

如何在c++中使用结构数组调用下一个元素
EN

Stack Overflow用户
提问于 2020-08-27 11:50:41
回答 4查看 61关注 0票数 2
代码语言:javascript
运行
复制
#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’)

EN

回答 4

Stack Overflow用户

发布于 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]);
票数 1
EN

Stack Overflow用户

发布于 2020-08-27 11:59:57

几个问题:

你的结构有4个成员;你像3.

  • printf("a = %p\n", s[1]);一样实例化它,你正在访问数组索引1处的元素。(
  1. )这也是错误的,因为您的数组是struct abc类型的。

根据我所看到的,您正在尝试打印特定元素的地址,您可以使用指针算法来执行此操作:

printf("%p",(s+i));或使用&来指定您想要该元素的地址:printf("%p",&s[i]);

  • Also,您声明了您的i,但没有给它赋值,因此它将在您的计算机的ram中具有一些garbage value。在编写代码时,最好总是声明和初始化变量:

int i = 0;

票数 1
EN

Stack Overflow用户

发布于 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。

你的程序中有一些问题,如下所示。

  • i未初始化。si +1无效,
  • s1表示结构abc。它不是地址。如果你想打印地址,你需要使用&s1
  • 结构abc有4个变量。但是您的数组仅初始化了3个参数

下面是程序。

代码语言:javascript
运行
复制
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]);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63608888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档