这里为什么没有越界.我不理解,这明明超过了答案是没有越界,?。?!!?。
2条回答 默认 最新
- a5156520 2022-02-23 20:21关注
我是这么理解的:因为二维数组可以用一维数组的形式访问,int b[3][3]可以理解为有9个int元素的一维数组,二维数组b[0][3]可以理解为一个一维int数组下标为(0x3+3)的int元素,即数组开头后面第4个int-即4,所以没有越界,但如果是b[2][3]就越界了,因为理解为访问一个一维数组下标为(2x3+3)=9,即第10个元素,超出了二维数组共有的9个int元素的范围,所以越界了。
可以用一个简单的代码检验一下:#include <stdio.h> int main(void){ int b[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; printf("%d\n",b[0][3]); //访问数组开头第10个元素,为数组之外的内存了。 printf("%d\n",b[2][3]); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 python提取.csv文件中的链接会经常出现爬取失败
- ¥15 数据结构中的数组地址问题
- ¥15 maya的mel里,怎样先选择模型A,然后利用mel脚本自动选择有相同名字的模型B呢。
- ¥15 Python题,根本不会啊
- ¥15 会会信号与系统和python的来
- ¥15 关于#python#的问题
- ¥20 oracle RAC 怎么配置啊,配置
- ¥15 excel 日常使用中出现问题
- ¥20 pdusession建立失败
- ¥15 为什么mqtt接收不到数据?