2017-08-05 75 views
1

首先为size_t,我知道这thread添加指针C89

现在假设我有此数组:

size_t count = some_value(); 
struct info *pinfos = malloc(count * sizeof(struct info)); 

,我想“导航”,它使用可变

struct info  *p; 

我可以使用此代码来检查限制?

p < (char*)pinfos + count*sizeof(struct info) - 1 

这是合法的C89

有没有更“合适”的方式来做到这一点?

+0

旁白:'info' ==>'结构info'。 –

+0

你不需要对'char *'进行强制转换。指针运算与数组索引相同。无论每个元素的大小如何,下一个元素都是“1”。 –

+0

什么是您的第一个评论的意思,请 –

回答

3

你可以做到这一点的确但你是它过于复杂,只是做

p < pinfos + count - 1 

而且由于指针运算都是在指针类型的大小方面表现它会工作。

+0

为什么-1?你检查得太短。 –

+0

@MichaëlRoy因为普将在稍后 –

+0

增加,这是否意味着我可以添加(无符号)整数(在这种情况下,为size_t)自由地指点? –