繁体   English   中英

Objective-C中的方括号和大括号之间有什么区别?

[英]What is the difference between square brackets and curly brackets in Objective-C?

我是Objective-C的新手,无法理解在数组中使用大括号和方括号的区别吗? 例如下面的代码

float trainingData[3][3] = { { 84, 191, 19 }, { 24, 186, 17}, { 22, 157, 21} };

您有一个多维数组或jaggad数组,这意味着一个数组数组...
这意味着你有..................的价值

array1: x1 x2 x3                            84,191,19
array2: x4 x5 x6                            24,186,17
array3: x7 x8 x9                            22,157,21

现在大括号代表您要添加的区域

因此,如果您添加第1行(或数组1)... trainingData[0]
它需要一个值数组(一行具有多个值)

因此,大括号表示您正在为其索引分配对象
例如,如果您想要一个值为1,2,3的数组,则可以执行以下操作

int[] values = {1,2,3}

现在,在您的情况下,您有一个数组的数组,因此第一个(或外部)大括号用于定义每行,而其中的大括号用于定义其中的每一行的值

float trainingData[3][2] = { { 84, 191}, { 24, 186}, { 22, 157} };

注意现在每行只有2个值,因为数组长度已更改,所以您有3组2

array1: 84,191
array2: 24,186
array3: 22,157

在C中:

方括号:表示它是一个数组。

在给定的代码中, trainingData [3] [3]表示一个3行3列的2D数组。

弯括号:可以通过为每行指定带括号的值来初始化多维数组。 在给定的代码中:

float trainingData[3][3] = { 
{ 84, 191, 19 },       /*  initializers for row indexed by 0 */
{ 24, 186, 17},         /*  initializers for row indexed by 1 */
{ 22, 157, 21}          /*  initializers for row indexed by 2 */
};

在目标C中:

方括号:

方括号语法用于所有方法调用。 使用getter和setter时,您可以使用点语法。

弯括号:代表字典或可变字典。

NSDictionary *Dic= @{@"Name":@"abc",@"ID":@"123"};

您可以说声明或定义放在方括号中,而赋值在大括号中。

例如,

double balance[5];

这是大小为5的数组,因此5被定义在square brackets

现在,

double balance[] = {1000.0, 2.0, 3.4, 17.0, 50.0};

然后在大括号中定义值。

balance[4] = 50.0;

设置第四个元素,因此索引定义在方括号中。 这里只有一个值,因此不需要大括号。 因此,大括号的基本用途是声明或分配集合。 由于您的问题中有数组,数组的值也是一组。

因此,您可以像我提到的那样区分它。

实际上,这些是您说要使用数组的协议或语法,因此,发现花括号之间的区别实际上是没有意义的。

float trainingData [3] [3]是一个多维数组,您说的是trainingData多维数组,在方括号中的大小为3:3

在花括号{{84,191,19},{24,186,17},{22,157,21}}中;

您正在为数组分配值

[3:3]

trainingData {0} => {84,191,19}

trainingData {1} => {24,186,17}

trainingData {3} => {22,157,21}

通常,您使用方括号定义大小,并使用花括号将其添加

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM