我看了其他几个都处理此错误的问题,但是所有答案基本上都只是说“不要做指针数学”。我的代码如下:
MyObject * __strong * array = (MyObject * __strong *)calloc(sizeof(MyObject*), 5);
array[0] += 4;
我想知道 为什么 我不能进行指针数学运算。根据错误,指向的MyObject*
值大小不同,但这没关系,对吧?只是一个指针数组-谁在乎它们指向的东西有多大?
我想我可能只是不了解ARC的所有细微差别。
答案 0 :(得分:2)
您的变量“数组”是指向指针的指针,是的,您可以将其视为指针数组。对象“ MyObject”的大小显然不是恒定的,并且编译器正确地不允许您执行此类操作。 尚不清楚您想对变量做什么。
array [0] + = 4;
从数组的第一个元素中获取“ MyObject *”,并希望向其添加偏移量4,但要计算此类偏移量,编译器希望知道对象的大小。 可能是您想做
array = array + 4;
or
array += 4;