You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言访问二维数组未指定列索引的返回结果疑问

问题解答

首先明确C语言中二维数组的本质:你定义的int A[3][2]是「元素为int[2]类型数组」的数组,A[1]就是该数组的第2个元素,类型为int[2](长度为2的整型数组)。

在C语言的大多数表达式场景中,数组名会隐式转换为指向首元素的指针,因此直接使用A[1]时,它会被自动转换为int*类型的指针,指向A[1][0](也就是值为5的元素)的内存地址。具体打印结果分两种情况:

  • 如果你用指针格式符%p打印:操作完全合法,输出的是A[1][0]对应的十六进制内存地址,既不是垃圾值,也不存在逻辑错误。
  • 如果你误用整型格式符%d等打印:属于类型不匹配的未定义行为,输出的是内存地址被强制解释为整型的数值,不是常规意义上“未初始化内存”的垃圾值,但属于逻辑错误——你拿到的不是任何数组元素的值,完全不符合使用预期。

如果你希望打印A[1]对应的数组元素,不能直接打印数组名本身,需要通过下标访问A[1][0]/A[1][1],或者对指针解引用*A[1]/*(A[1]+1)才能拿到具体的元素值。

内容的提问来源于stack exchange,提问作者Terry Tan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:06:11