[讨论][求助]又是招聘题,不买也要看一看啊
#include<iostream.h>void main()
{
int p[][3]={{1,2,3},{4,5,6},{7,8,60}};
int *q = p[1]+6;
int *t = p[1]+5;
cout<<*q<<endl;
cout<<*t<<endl;
}
结果1245120
60
说明原理
首先说#include <iostream.h>
引用此文件是为了调用后面的字符留命令cout和cin方便
接下来是定义了一个没有行限制的2维数组.
而q和t是定义了两个指向次二维数组某一行的两个指针
p[1]代表的是数组的第二行的首地址,而再+数字的话就表示指针的相对移动.如:如果p[1]代表的是4的话那么p[1]+2则指向6,p[1]+4则指向8;
对于*q的输出p[1]+6 按上面所说应该是指向60的下一位 所以应该是溢出 ,溢出后系统则随即给一个数(不一定是什么数) ;对于p[1]+5则正好指向了60,所以输出为60
至于p[1]+1和p[1]+2为什么输出不是5和6就不太懂了