在C89中添加指向大小的指针

在C89中添加指向大小的指针,c,c89,ansi-c,C,C89,Ansi C,首先,我知道: 现在假设我有这个数组: size_t count = some_value(); struct info *pinfos = malloc(count * sizeof(struct info)); 我想用变量“导航”它 struct info *p; 我可以用这个代码检查限额吗 p < (char*)pinfos + count*sizeof(struct info) - 1 p

首先,我知道:

现在假设我有这个数组:

size_t    count = some_value();
struct info    *pinfos = malloc(count * sizeof(struct info));
我想用变量“导航”它

struct info     *p;
我可以用这个代码检查限额吗

p   <   (char*)pinfos  +  count*sizeof(struct info)  -  1
p<(char*)pinfos+count*sizeof(结构信息)-1
这在C89中合法吗


有没有更“合适”的方法呢?

你确实可以这么做,但你把它复杂化了,就这么做吧

p < pinfos + count - 1
p

因为指针运算是根据指针类型的大小来执行的。

为什么是-1??你检查得太短了。@MichaëlRoy,因为p稍后会递增,这是否意味着我可以向指针自由添加(无符号)整数(在本例中为大小?@BiteBytes确实可以,但要小心UB。旁白:
info
==>
结构信息
。你不需要对
char*
进行转换。指针算法的工作方式与数组索引相同。下一个元素是
1
,与每个元素的大小无关。请注意,您的第一个注释是什么意思?这是我们希望看到显示问题的元素的原因之一。这样它就不会是“最小的”。拼写错误和“类似于我的代码”的问题不好回答。他们使他们很难回答。