为什么我不能指向数组中的数组?

问题描述 投票:0回答:1
struct page { 
   
   int a;
   int b;
};

page chp1p1 = { 1, 2 }; // chapter 1 page 1

page chp1[12] = {

   chp1p1

};

page chapters[14] = {
   
   chp1

};

int main(){

   page& currChp = chapters[0];
   page& currPart = currChp[0];

   printf("If we are here then no errors");
   return 0;

}

currChp[0] 处出现错误。

尝试指向数组中的数组。元素是结构。 我只是不想使用开关盒。 从我的角度来看,我所做的只是通过引用指向数组内的数组。所以我不明白为什么这是一个错误。

arrays c struct
1个回答
2
投票

您的问题是一个非常非常基本的初学者语法问题。请务必查看您的教科书材料。

struct index
{
  int chapter;
  int page;
};

struct index indices[2] =
{
  { 0, 0 },
  { 1, 24 },
  // etc
};

但是,您似乎想要进行(第 ⟶ 页码)查找。

为此,您只需要页面索引数组。

int
就可以了。

此外,当您静态初始化数组时,您可以省略数组中的元素数量(因为编译器可以自行计算出)。

#include <stdio.h>

int chapter_to_page[] =
{
  0,
  24,
  //... and so on
};

int main(void)
{
  printf( "Chapter 1 begins on page %d\n", chapter_to_page[1] );
  return 0;
}

如果您打算加载一个文件,其中包含有关各个章节从哪些页面开始的信息,那么您将需要一个大数组并跟踪其大小:

#define MAX_NUM_CHAPTERS 100
int chapter_to_page[MAX_NUM_CHAPTERS] = {0};
int num_chapters = 0;

添加查找很容易:

chapter_to_page[num_chapters++] = 0;
chapter_to_page[num_chapters++] = 24;
// ... etc
// be careful to not let `num_chapters` get bigger than `MAX_NUM_CHAPTERS`
© www.soinside.com 2019 - 2024. All rights reserved.