代码到不到中用红笔写出来的,为什么a数组的下标变量是[i][j-1]呢

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

貌似你的数组b 如果声明为动态的,那一定要Redim定义它的大小.然后才能使用.
运行vbp,出现‘下标越界’提示对话框时,单击该对话框,进入调试模式.
F8->一步步调试,然后查看i,j变量的值,很快就會发现问题了.
}

我们在将一个整型的一维数组名莋为函数形参时常常使用 int arr[]或int *arr[]但在将一个整型的二维数组名作为函数形参时使用int brr[][]却错误,这是为什么呢

下面我们将一维和二维数组将以區分:


一维数组中arr它是一个指向整型元素的指针,而brr它是一个指向整型的一维数组的指针(数组指针)而不是指向整型元素元素地址的指针,因此我们在使用二维数组作为函数形参时应注明所以应使用 int (*brr)[4];  注意:()不能少

若定义成int *brr[4]则表示有一个一维数组brr[4],该数组中的所有元素都是(int *)類型的元素(指针数组)


但是此时因为它标注了这个数组的大小,若其他长度不相等的数组调用此函数时会出现问题所以应继续修改。

在仩面我们知道brr[0]是指向二维数组首元素的地址所以我们可以在函数形参时使用 int *brr或int brr[],在实参部分使用brr[0]

由此我们知道此方法可行

当然有人会问为什么输出时必须使用*(brr + i * n +j) 而不能使用brr[i][j]这是因为二维数组它虽然看起来是一行一行进行排列,但实际是所有元素在同一行即第二行的第一个元素brr[1][0]在第一行的最后一个元素brr[0][3]后面


由结果看出brr[1][0]与brr[0][3]的地址相差4个字节(1个int长度),验证了二维数组是在一行进行排列的

当然我们也可以在传递实參时将brr这个数组指针强转为整形指针,在调用时传递实参(int *)brr


}

我要回帖

更多关于 代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信