让我们有一个 struct Structure_S,其中元素par1(Int)和par2[](int数组).在函数中,我们必须在 struct 的一个特定指标[m]上求出PAR2的总和?你是怎么做到的?

int function(struct structure_s *ps){
   //something that determinates index
  
    for(int j = 0; j < m; j++){
   //and now how do I get to the structures[index].par2[j]
    }
}

//the variables n and m are known beforehand
struct structure_s{
   int par1;
   int par2[n];
}

int main(void){
  struct structure_s structures[m];
  int sum = function(structures);
  //etc.

不幸的是,他们没有在课堂上展示这一点,我找不到太多有用的信息.

我试过使用Like (*(ps + index)).par2[j],但它不起作用,它显示指针指向未定义的类型.我还想,也许当我把它传递给函数时,应该是&amp; struct ,但仍然是同样的错误.还有(*p)[index].par2[j](*(p)[index]).par2[j],但不知道该用什么.你知道怎么做吗?

编辑,解决方案:我太蠢了,谢谢你们的帮助,知道指针可以像数组一样被注意到是很好的,问题是:没有在函数之前定义 struct .你每天都能学到一些新东西.

推荐答案

int function(struct structure_s *ps){
   //something that determinates index
  
    for(int j = 0; j < m; j++){
   //and now how do I get to the structures[index].par2[j]
    }
}

[.]

它显示指向未定义类型的指针

对于您所呈现的 struct 类型,您的structures[index].par2[j]try 是格式良好的,但您需要在使用该类型的点上具有该类型的定义.您的示例代码向类型定义after显示了该函数,如果它忠实地反映了您的真实代码,那么它就是问题的根源.确保 struct 定义出现在函数之前.

事实上,布局C源文件是相当常规的,如下所示:

  1. 必填标头为#include

    • 标准库标头
    • 外部库头
    • 本地标头
  2. 未从标头获取本地宏定义

    • 类似对象的宏
    • 类似函数的宏
  3. 不是从标头获取的本地类型定义

  4. 文件范围的变量定义(如果有)(非定义声明应来自头)

  5. 不是从标头获取的任何需要的局部函数的正向声明

  6. 函数定义

当然,变化是可能的,但这往往会让事情按照你需要的顺序进行.

C++相关问答推荐

使用sd-设备列举设备导致seg错误

从STdin读写超过4096个字节

C如何显示字符串数组中的第一个字母

C/SDL程序,渲染不使用我的渲染器

为什么sscanf不能正确地从这个字符串格式中提取所有数字?

为什么此共享库没有预期的依赖项?

无法在OpenGL上绘制三角形

在C中访问数组中的特定值

C代码在字符串中删除不区分大小写的子字符串的问题

为什么这个分配做得不好呢?

判断系统命令返回值的正确方法

OSDev--双缓冲重启系统

为什么我的半数组测试和奇数组测试不起作用?(我使用Assert进行调试)

*S=0;正在优化中.可能是GCC 13号虫?或者是一些不明确的行为?

c程序,让用户输入两类数字,并给出输出用户输入多少个数字

如何使用calloc和snprintf

为什么我在我的代码中得到错误和退出代码-1073741819(0xC0000005),但如果我添加了一个不相关的打印语句,它仍然有效?

RISC-V GCC编译器错误编译ASM代码

WSASocket在哪里定义?

GDB 跳过动态加载器代码