![]() | 1 churchmice 2014-11-20 16:47:32 +08:00 via Android 因为B在栈顶,N+1行其实是越界了,被其他程序改掉了 |
2 sharebox 2014-11-20 16:53:20 +08:00 下标从0开始? |
3 cvrock 2014-11-20 17:29:11 +08:00 你打印的是A[height][i]和B[height][i]的值,此时height为10,显然越界了,你应该是指A[height - 1][i]吧。 |
![]() | 4 proudzhu 2014-11-20 18:32:32 +08:00 via iPhone 都越界了,你想出现什么结果?可以去看一下生成的汇编代码 |
![]() | 5 acros 2014-11-20 18:35:49 +08:00 这个是c系语言的基本常识哎 如果真要问数组有哪些坑,可以看看《C专家编程》那本书。数组问题讲了很多,不过看那本书之前得有计算机原理和体系结构方面的知识打底。 |
6 kamen 2014-11-20 18:50:50 +08:00 数组的问题不用看都是越界 |
![]() | 7 catbaron OP |
![]() | 8 FrankHB 2014-11-20 19:35:09 +08:00 ![]() 给数组赋值有什么坑?如果按标题字面回答,没有:因为C++的(内建)数组表达式根本就不支持被赋值。 下标从0开始,越界什么的有说了就不多讲了。 要愉快地折腾内建数组,你至少还得知道那么几件事: 为什么不推荐/避免用数组; 所谓的数组本义是指类型; 内建[]的语义; array-to-pointer conversion; one past the last element的特殊性; 怎么初始化。 至于看汇编什么的,现阶段请一概无视。我的经验表明对天赋点在正负两个标准差内的人群得到正确的理解没有什么好处。 |