首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C C++数组....需要帮助理解代码

C C++数组....需要帮助理解代码
EN

Stack Overflow用户
提问于 2010-02-03 08:35:42
回答 9查看 256关注 0票数 3

你能解释一下这段代码吗?在我看来,"a“是一个双精度数组吗?我认为它只是一个整数,但在cout语句中,它被用作双精度数组。另外,在for循环条件下,它显示a<3b/3-3,这对我来说没有任何意义,但是代码会编译并运行。我只是很难理解它,在我看来它在语法上不正确

代码语言:javascript
复制
int a,b[]={3,6,5,24};
char c[]="This code is really easy?";
for(a=0;a<3[b]/3-3;a++)
{
cout<<a[b][c];
}
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-02-03 08:47:13

哇。这真的很时髦。这不是真正的二维数组。它之所以有效,是因为c是一个数组,并且在C语言中有一个标识来处理它

代码语言:javascript
复制
b[3]

和这个一样

代码语言:javascript
复制
3[b]

因此,此代码转换为一个循环,该循环递增一次while a < (24/3-3),因为3[b]b[3]相同,而b3为24。然后,它使用a[b] (与b[a]相同)作为数组c的索引。

因此,取消混淆后的代码是

代码语言:javascript
复制
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]];
}

因为b4不存在,所以输出应该是字符串c的第3、5、6和24个字符,或者

代码语言:javascript
复制
sco?

然后是一些随机的字符或者崩溃。

票数 6
EN

Stack Overflow用户

发布于 2010-02-03 08:41:34

数组访问器几乎是指针运算的语法糖。a[b]相当于b[a]相当于*(a+b)

也就是说,使用index[array]而不是array[index]是非常可怕的,你永远不应该使用它。

票数 7
EN

Stack Overflow用户

发布于 2010-02-03 08:37:47

不,在第一条语句中声明了两个变量:int aint b[]

a[b][c]只是c[b[a]]的一种微妙说法,这是因为数组的语法:b[0]0[b]是等效的。

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

https://stackoverflow.com/questions/2188879

复制
相关文章

相似问题

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