令人混淆的数组指针加法运算

q松_松q

关注

阅读 145

2022-12-01


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

精彩评论(0)

0 0 举报