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

C语言中如何设置指针指向二维数组的指定行

实现指向二维数组第一行的指针方法

给定二维数组定义如下:

double a[2][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}};

要定义指向第一行的指针,首先要明确类型匹配规则:C语言中二维数组的每一行都是一个固定长度的一维数组,本例中每行是包含4个double元素的一维数组,因此指向行的指针必须是指向长度为4的double数组的数组指针,不能用指向单个double的普通指针替代。

具体写法

  • 显式取第一行地址赋值(语义最直观,推荐新手使用)
// 声明指向「包含4个double元素的数组」的指针p,指向第一行a[0]的地址
double (*p)[4] = &a[0];
  • 利用数组名退化规则简写
// 二维数组名a作为右值时,会自动退化为指向第一个元素(即第一行)的指针,和上面写法完全等价
double (*p)[4] = a;

常见错误说明

不要使用double *p = a[0];这类写法:这个写法里的p是指向单个double类型的指针,仅指向第一行的第一个元素a[0][0],而非整行。二者步进长度完全不同:普通double指针每次偏移移动1个double的长度(通常8字节),而数组指针每次偏移移动一整行的长度(4个double,共32字节),如果混用会导致指针运算逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:48:17