首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用c型数组作为ivar?

如何使用c型数组作为ivar?
EN

Stack Overflow用户
提问于 2009-12-03 00:34:10
回答 2查看 724关注 0票数 3

在我的程序中,我需要一个很好的老式的二维整数数组,但无论我如何尝试将其声明为ivar,然后使用@property/@synthesize,我都会收到这样或那样的编译器抱怨。

我宣布

代码语言:javascript
复制
int spotLocations[10] [10] 

作为一个伊瓦尔。

这么多工作都可以,但是@property/@synthesize进程永远不会通过测试。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-03 01:49:52

你不能这么做。在C中,数组变量永远不能是左值,这意味着你永远不能声明一个返回数组的函数,因为不可能将函数的结果赋给一个数组变量(因为它不能是左值)。

属性只是声明返回类型的函数的一种快捷方式。因为函数永远不能返回数组,所以你永远不能声明一个数组的属性。

如果你确实需要像这样移动矩阵,你可以把它包装在一个struct中,这个struct可以是左值:

代码语言:javascript
复制
typedef struct {
  int value[10][10];
} matrix;

..。

代码语言:javascript
复制
@property matrix spotLocations;

当然,访问这些位置有点复杂,您必须使用

代码语言:javascript
复制
spotLocations.value[x][y]
票数 4
EN

Stack Overflow用户

发布于 2009-12-03 02:03:37

将实例变量声明为指针,然后在init方法中动态创建数组。对@property声明使用assign参数。

分配:

代码语言:javascript
复制
spotLocations = malloc(100 * sizeof(int));

通过执行以下操作来访问列和行:

代码语言:javascript
复制
int aValue = spotLocations[x + y * 10];

使用完指针后,记得释放()指针。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1834137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档