数组遍历出来为什么是哈希code码

发布时间:2019-08-26 13:59:15

数组遍历出来为什么是哈希code码

推荐回答

谁说没法遍历的?我只能回答你这个问题,不知道你前面要问什么问题,遍历二维数组谁说非得用指针的啊?如果是教科书上这样写的,那可能是要让你明白数组指针是怎么回事 int(*q)[4]是一个指向有4个整型元素的数组指针,因为要为这个指针赋值,必须要满足一个条件就是这个数组必须有4个元素,也就是这个数组的列数必须有4个元素,有多少行可以不用管,比如int a[3][4],可以这样赋值q=a;再有int b[4]; 可以这样赋值q=&b;注意q=b是错误的,因为一维数组名b不是表示有4个元素数组的地址,他只能表示一组数组中第一个元素的地址。要让q遍历a[0][1],a[0][2]是可以的,首先赋值 int a[3][4]; q=a; 或 q=&a[0]; 这时q是指向二组数组第一行的地址的,这一行有4个元素,因此q指向的是数组的地址,若直接对q+1肯定会让地址指向下一行了,因为这时q是指向的第一行的行地址,这个地址是与&a[0]相同的,注意虽然&a[0]与a[0]地址的值是相同的,但表示的意义相差很大,&a[0]表示的是第1行的行地址,这个地址中有4个元素,同时&a[0]与二维数组名是相同的,而a[0]表示的是第一行第一列元素的地址,因此要让q能指向a[0][1]的地址,只须将指针q解引用再+1就能得到你想要的结果了,比如*q+1就表示的是a[0][1]的地址,即&a[0][1]。因为q=&a[0]因此*q=*(&a[0])=a[0],而a[0]是与&a[0][0]相等的,即a[0]表示的就是第一行第一个元素的地址,因此*q+1就是第一行第二个元素的地址,即&a[0][1]因为二组数组与指针的关系比较复杂,一两句说不清,若有不明白的地方可以参看文章 百度搜索《C++指针与动态分配内存new关键字专题 》有详细介绍。
以上问题属网友观点,不代表本站立场,仅供参考!