我声明了一个二维数组 a[10][2]={{1,1},{2,2},{3,3},{4,4},{5,5},{6,6},{7,

我声明了一个二维数组 a[10][2]={{1,1},{2,2},{3,3},{4,4},{5,5},{6,6},{7,7},{8,8},{9,9},{10,10}};
我想要把{2,2}和{5,5}交换未知的话应该如何实现?我获取了a[1]和a[4]的地址存在b[]中,然后能用a[1]=b[4]这种方式改变位置么?我是小白,如果又代码的话最好.
推理游戏_毛利 1年前 已收到1个回答 举报

永远的支持者 春芽

共回答了13个问题采纳率:100% 举报

不能a[1]=b[4].这个原理很复杂,要牵涉到指针的问题.如果定义一个一维数组c[5],那么c这个东西,它代表的是c[0]的起始地址.c这个东西是存储一个变量的地址,这种东西叫指针.c+1表示的是c[1]的起始地址.*c代表c指向的变量内容,*(c+1)代表“c指向的变量”紧挨着的下一个变量的内容.*(c+1)和c[1]是一个意思.*c和*(c+0)、c[0]也是一个意思.这里的c是一个常量形式的指针,是不能改的.如果定义2维数组a[3][2],a指向a[0]这个东西,a[0]又指向a[0][0]这个数组元素.a[1]指向a[1][0]这个数组元素,(a[2]+1)指向a[2][1]这个数组元素.a并不代表这个数组本身,正如a[2]也不代表a[2][0]、a[2][1]这俩数组元素组成的小数组一样.除了实际的数组元素外,其他的像a,a[1]都是常量指针. 所以交换内容时只能循环一个一个交换.但愿你能看懂.去看看有关指针的章节吧.

1年前

2
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.028 s. - webmaster@yulucn.com