二维数组用一维数组表示输出的为什么是地址?

daiqingxun 2015-11-09 08:10:22
二维数组用一维数组表示输出的为什么是地址,而它本身的地址跟输出的相同为什么?
...全文
667 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
耗子0_0 2015-11-18
  • 打赏
  • 举报
回复
当成地址看就好了,本身也是地址而已
自信男孩 2015-11-18
  • 打赏
  • 举报
回复
二维数组分为行和列;i[1]表示的就是指第二行的首地址,即也是第二行第一列的首地址;当然在内存里存放的都是线性的,第一行和第二行都是串行保存在内存里的;为了便于理解二维数组,你可以理解成行和列,平面存储的;
赵4老师 2015-11-17
  • 打赏
  • 举报
回复
#include <stdio.h>
void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}
int main() {
    int i[2][2]={{1,2},{3,4}};
    HexDump((char *)&(i[0][0]),4*sizeof(int),(int)&(i[0][0]));
    return 0;
}
//0012ff60 - 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00  ................
//
ruying1389279 2015-11-17
  • 打赏
  • 举报
回复
正确的打印方法i[1][1];
paschen 2015-11-09
  • 打赏
  • 举报
回复
其实C/C++中的二维数组就不是真正意义上的二维数组,而是一维数组的一维数组 假如 int arr[2][3][4],则最左侕的int arr[2] 为第一层包内数据,下标2说明第一层包内有2个int[3][4]类型的小包;打开下一个小包,里面是int[4],再打开下一个,里面是int 所以如果你只是写arr[0]那么得到的只是下一个包(是个数组),数组名可转换为指针,指向数组首地址,固输出的是地址
fefe82 2015-11-09
  • 打赏
  • 举报
回复
int i[2][2]; i 数组的数组 i[1] 数组 printf("...", i[1]); 数组,自动转化为指向数组第一个元素的指针 &i[1] 指向数组(i[1] )的指针。 数组与数组的第一个元素拥有相同的地址。
_Leo_pan 2015-11-09
  • 打赏
  • 举报
回复
书上应该会告诉你,二维数组第一维是指针吧 http://blog.csdn.net/u010518261/article/details/43016765 博客上看看,

70,014

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧