int a[3] = { 1, 2, 3 };
int (*p)[3] = &a; // 赋值正确,p保存指向a的指针,是一个二维指针
p++; // 指针跑飞
*((*p) + 1) = 10; // stack smashing
int b[2][3] = { { 1, 2, 3 }, { 1, 2, 3 } };
int (*p1)[3] = b; // 赋值正确,p1保存指向b的指针,是一个二维指针
p1++; // 正确 此时p1指向b[1]即第二维数组
**p1 = 10; // 正确 a[1][0]被设置为10
令人混淆的数组指针加法运算
最新推荐文章于 2025-05-29 08:32:01 发布
这篇博客探讨了C++中指针与数组的关系,详细解析了如何使用指针操作数组,包括二维指针的使用。通过示例展示了如`inta[3]`和`intb[2][3]`的数组赋值与遍历,以及指针的递增操作。文章还提到了指针`p`和`p1`在不同情况下的行为,以及可能出现的‘stacksmashing’错误。

2943

被折叠的 条评论
为什么被折叠?



