我怎么写这个C更加简洁的引用?

问题描述 投票:0回答:1

我具有将输入文件解析为单独页面的功能。 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错误...)。

有写这三行的较短方法吗?

c pointers dereference
1个回答
0
投票

您可以使用&(*p_pages)[*page_count - 1],或者如所指出的那样使用等效的*p_pages + *page_count - 1

您可以如下得出:p*p_pagesn*page_count - 1,因此通过直接替换,&p[n]&(*p_pages)[*page_count - 1]

利用a[b]*(a + b)的事实,可以将其转换为&*(*p_pages + *page_count - 1),即*p_pages + *page_count - 1

© www.soinside.com 2019 - 2024. All rights reserved.