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] 处出现错误。
尝试指向数组中的数组。元素是结构。 我只是不想使用开关盒。 从我的角度来看,我所做的只是通过引用指向数组内的数组。所以我不明白为什么这是一个错误。
您的问题是一个非常非常基本的初学者语法问题。请务必查看您的教科书材料。
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`