您好 我试图让这个函数返回一个数组!这里出了什么问题?
-(char[10])print01:(int)int11{ //error: declared as method returning an array
char arrayT[10];
for(int i=0;i<8;i++)
{
if ((int1-n1)>=0){
arrayT[i]='1';
int1-=n1;
}
else
arrayT[i]= '0';
n1=n1/2;
}
return arrayT[]; // incompatible types in return
}
我想这样称呼它:
char array1[10] = [self print01:(int)int1]; //error: invalid initializer
有什么建议吗?
答案 0 :(得分:5)
您无法在C或Objective-C中返回数组。你可以期望的最好的方法是返回一个指向数组的指针,但是如果你要这样做,请确保你没有返回指向堆栈数组的指针(就像你的那样)。
答案 1 :(得分:0)
最好的方法是使用NSArray(对象当然,我假设上面的代码是简化的样本,但你总是可以使用NSNumber)。或者,您可以返回一个指向数组的指针,这在C中是常见的C(而扩展的目标c)不能返回数组。不幸的是,这需要为阵列分配内存并使用手动内存管理(malloc / free),这取决于阵列的生命周期,可以是从麻烦到糟糕的任何地方。我的建议是获取一个char * dest参数,并将字符作为dest [i]
插入到数组中