你能解释一下这段代码吗?这对我来说似乎有点混乱"a"是一个双阵列?我认为它只是一个整数,但在cout语句中它被用作双数组.同样在for循环条件中它表示<3 [b]/3-3,这对我没有意义,但是代码编译并运行.我只是在理解它时遇到了麻烦,对我来说,语法似乎不正确
int a,b[]={3,6,5,24}; char c[]="This code is really easy?"; for(a=0;a<3[b]/3-3;a++) { cout<
Anon... 7
数组访问器几乎是指针算术的语法糖.
a[b]
相当于b[a]
相当于*(a+b)
.也就是说,使用
index[array]
而不是array[index]
完全可怕,你永远不应该使用它.
1> Anon...:数组访问器几乎是指针算术的语法糖.
a[b]
相当于b[a]
相当于*(a+b)
.也就是说,使用
index[array]
而不是array[index]
完全可怕,你永远不应该使用它.
我认为这是我第一次看到有人说为什么a [b]和b [a]是等价的...现在看来它显得非常明显,但看到它写成*(a + b)经过多年的C编码后,语法终于明白了.
@Anon:有一次我使用`index [array]`形式 - 在一个宏中获取数组中元素的数量.使用`index [array]`形式可以防止表达式意外地为一个重载'`[]`'运算符的C++类工作(诚然,这是一个非常专业的用法).
2> John Knoelle..:哇.这真的很时髦.这不是真正的二维数组.它的工作原理是因为它
c
是一个数组,并且在C语言中有一个对待它的标识b[3]和此一样
3[b]所以这段代码转换成一个循环,增加一段时间,
a < (24/3-3)
因为3[b]
它b[3]
与b [3]是24相同.然后它使用a[b]
(它是相同的b[a]
)作为数组c的索引.所以,这段代码没有混淆
int a; int b[] = {3,5,6,24} char c[] = "This code is really easy?"; for (a = 0; a < 5; a++) { cout << c[b[a]]; }因为b [4]不存在而被破坏,所以输出应该是字符串c的第3,第5,第6和第24个字符或者
sco?然后是一些随机字符或崩溃.