鱼C论坛

 找回密码
 立即注册
查看: 1700|回复: 4

[已解决]关于C的指针与数组

[复制链接]
发表于 2023-9-9 21:46:23 | 显示全部楼层
你的问题涉及 C 语言中指针和数组的一些概念。

首先,关于一维数组的问题:

1. 初始化一维数组:int a[3] = {1, 2, 3};
   这条语句正确地创建了一个含有三个整数元素的一维数组,并将每个元素的值初始化为 1、2 和 3。

2. 定义指向一维数组的指针:int *pa = &a;
   这里编译器会报错,因为数组名 a 本身就代表数组的首地址,类型为 int*。因此,正确的写法应该是 int *pa = a;,不需要使用取地址运算符 &

接下来,关于二维数组的问题:

1. 初始化二维数组:int b[][3] = {1, 2, 3, 4, 5, 6};
   这条语句创建了一个二维数组,其中包含两行三列的整数元素,依次初始化为 1、2、3 和 4、5、6。

2. 定义指向二维数组的指针:int *pb = &b;
   这里也会报错,因为二维数组名 b 也代表着数组的首地址,类型为 int (*)[3](指向含有三个整数的一维数组)。因此,正确的写法应该是 int (*pb)[3] = b;

总结一下:

· 对于一维数组来说,数组名代表数组的首地址,可以直接赋值给相应类型的指针,不需要取地址运算符 &
· 对于二维数组来说,数组名同样代表着数组的首地址,但由于其类型是指向一维数组的指针(即 int (*)[3]),所以在定义指向二维数组的指针时需要使用括号来保证优先级。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-19 09:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表