从一个Objective-C函数返回一个二维数组c [英] Returning a 2D C array from an Objective-C function

查看:125
本文介绍了从一个Objective-C函数返回一个二维数组c的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想做的事情实现的Objective-C这样的事情

I want to do achieve something like this in Objective-C

+(int[10][10])returnArray
{
    int array[10][10];
    return array;
}

不过,这给出了一个阵列初始化必须是一个初始化列表编译器错误。这是在所有可能的?

However, this gives an "array initializer must be an initializer list" compiler error. Is this at all possible?

推荐答案

您不能在C或Objective-C的返回数组(任何尺寸)。由于数组不是左值,你将无法返回值赋值给一个变量,所以没有意义的这样的事情发生。你可以解决它,但是。你需要返回一个指针,或拉一招就像把你的数组中的结构:

You can't return an array (of any dimension) in C or in Objective-C. Since arrays aren't lvalues, you wouldn't be able to assign the return value to a variable, so there's no meaningful for such a thing to happen. You can work around it, however. You'll need to return a pointer, or pull a trick like putting your array in a structure:

// return a pointer
+(int (*)[10][10])returnArray
{
    int (*array)[10][10] = malloc(10 * 10 * sizeof(int));
    return array;
}

// return a structure
struct array {
  int array[10][10];
};

+(struct array)returnArray
{
   struct array array;
   return array;
}

这篇关于从一个Objective-C函数返回一个二维数组c的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆