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

二维数组指针代码中int *pj = *pi;无报错的技术疑问

二维数组指针的疑问解答

首先明确代码里的指针类型:

  • int (*pi)[4] 是指向包含4个int的一维数组的指针,所以pi每次指向的是二维数组arr的一整行(比如指向第二行时,pi对应的是arr[1]这个int[4]类型的数组)。

你误解的核心点在这里:*pi并不是直接取出第二行的第一个元素5,而是解引用数组指针pi后,得到的是该行数组的数组名(arr[1])。在C/C++中,数组名在大多数表达式场景下(比如赋值给指针)会自动隐式转换为指向数组首元素的指针,也就是&arr[1][0]——这是一个int*类型的地址,正好和pj的类型匹配,所以赋值不会报错。

如果要取出5这个具体数值,你需要再解引用一次,也就是**pi,这时候才会拿到arr[1][0]的值5。

再拆解下循环逻辑:

  • 外层循环:pi从arr开始(arr会自动转成指向第一行的数组指针),每次pi++就跳到下一行的起始地址。
  • 内层循环:*pi转成该行首元素的指针赋值给pj,pj++依次指向该行的每个元素,*pj就是对应的元素值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:04:56