何予一子. 2022-02-23 19:49 采纳率: 78.9%
浏览 67
已结题

第二题为什么b[0][3]没有越界

img


这里为什么没有越界.我不理解,这明明超过了答案是没有越界,?。?!!?。

  • 写回答

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;
    } 
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月25日
  • 已采纳回答 2月25日
  • 创建了问题 2月23日

悬赏问题

  • ¥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接收不到数据?