在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
,与每个元素的大小无关。请注意,您的第一个注释是什么意思?这是我们希望看到显示问题的元素的原因之一。这样它就不会是“最小的”。拼写错误和“类似于我的代码”的问题不好回答。他们使他们很难回答。