我具有将输入文件解析为单独页面的功能。 other_func将行添加到这些页面。这是该函数的简化版本。
void func(FILE* f, page** p_pages, int* page_count) {
... do stuff, before passing a line struct and the current page to another function.
page* p = *p_pages;
int n = *page_count - 1;
other_func(line, &p[n]);
}
在最后三行中,我试图传递当前页面的地址。我以为可以使用&*p_pages[page_count - 1]
之类的方式执行此操作,但似乎无法使其正常工作(我认为正在获取EXC_BAD_ACCESS错误...)。
有写这三行的较短方法吗?
您可以使用&(*p_pages)[*page_count - 1]
,或者如所指出的那样使用等效的*p_pages + *page_count - 1
。
您可以如下得出:p
为*p_pages
,n
为*page_count - 1
,因此通过直接替换,&p[n]
为&(*p_pages)[*page_count - 1]
。
利用a[b]
是*(a + b)
的事实,可以将其转换为&*(*p_pages + *page_count - 1)
,即*p_pages + *page_count - 1
。