假如一个 4 * 3 的数组,你可以想象为
0,0 0,1 0,2
1,0 1,1 1,2
2,0 2,1 2,2
3,0 3,1 3,2由于数组就是连续的存放空间,如果用连续编号来看就是
0, 1, 2,
3, 4, 5,
6, 7, 8,
9, 10, 11由于可以得到第一个元素的地址,就可以算出后面元素的地址,就是每行无素数 * 以前的行数 + 在当前行的位置,这就是 5 * i + j 的意思&b[0][0]+5*i+j 是 b[i][j] 的地址,该数组的一行有 5 个元素
0,0 0,1 0,2
1,0 1,1 1,2
2,0 2,1 2,2
3,0 3,1 3,2由于数组就是连续的存放空间,如果用连续编号来看就是
0, 1, 2,
3, 4, 5,
6, 7, 8,
9, 10, 11由于可以得到第一个元素的地址,就可以算出后面元素的地址,就是每行无素数 * 以前的行数 + 在当前行的位置,这就是 5 * i + j 的意思&b[0][0]+5*i+j 是 b[i][j] 的地址,该数组的一行有 5 个元素
解决方案 »
- 实现类似windows资源管理器窗口左侧的信息窗口
- CTRRRVIEW,树状目录显示问题
- MFC程序关闭了但是其进程并未关闭
- 把linux下的一行汇编代码移植到Windows上来,大家帮忙看看
- 请高手指点一下:dll的句柄如何释放,内容见文
- 恳求各位高手!!SDI中如何添加视图并使该视图和文档关联,以及多个视图之间如何切换?
- 各位大侠快来帮忙!在对话框模式下,窗口最小化状态下,怎样拦截RBUTTONUP消息?
- 大家说说VC和java 学那个较好些,感觉VC不好学呀!
- 动态连接库的问题,调用次书少时不会出现错误,上百次调用后就回出现错误,大致是内存泄露什么的.请问有什么方法解决.
- 求vs2013内存泄露检测工具
- 高手低手都来看,关于vxd.
- 一个职业程序员能干多久?
不是吧,*(&b[0][0] + 5 * i + j)表示的应该是变量b[i][j]呀,
iamfancy说的很对,你的数组应该是定义为 b[?][5]的,
例:array[3][5] array[0][0] array[0][1] array[0][2] array[0][3] array[0][4]
array[1][0] array[1][1] array[1][2] array[1][3] array[0][4]
array[2][0] array[2][1] array[2][2] array[2][3] array[0][4]
而在计算机内是这么存放的:(address 是词数组的初始地址)
address +5* 0 +0 array[0][0]
address +5* 0 +1 array[0][1]
address +5* 0 +2 array[0][2]
address +5* 0 +3 array[0][3]
address +5* 0 +4 array[0][4]
address +5* 1 +0 array[1][0]
.
.
.
address +5* 2 +4 array[2][4]
实际上数组在计算机中都是用指针表示的。
重载是c++语言的优秀之处,相同名称的函数可以被定义很多次,主要以函数返回值类型和携带的参数类型不同而加以区别,如,你可以定义三个函数:
int add(int x,int y){ return x+y;}
long add(long x,long y){ return x+y;}
float add(float x,float y){ return x+y;}
还有参数个数也可以不同:
int add (int x,int y, int z) {return x+y+z;}
在程序中直接调用,编译器会自动识别。重载为虚函数和“继承”提供了支持。