C语言指针指向一维数组与二维数组?

2024-12-01 02:59:41
推荐回答(2个)
回答(1):

3和2是一样的,也是会报错的。

可以使用行指针double (*p)[3]=data;指向数组第0行,也就是我们平常理解的第一行。

访问方式,假设data是i行j列,*(*(p+i)+j)就是第i行j列的元素值,也就是data[i][j]的值。

也可以使用列指针double *p = data[0]指向第0行0列,访问方式如下:

回答(2):

(三)应该报错的:error: cannot convert ‘double (*)[3]’ to ‘double*’ in initialization.

先回答(2):其实(二)和(三)一个意思,都不正确。(三)在你那里不报错估计是编译器环境的原因。

对于问题(1),在于能否正确理解二维数组名的含义。

二维数组名data表示第0行的地址;*data表示data[0][0]的地址;而**data才表示data[0][0]的值。


可以看一下该博文:二维数组中数组名与其指针的关系