| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 960 人关注过本帖
标题:刚才无聊 尝试着将二维数组和一维数组进行了一下转换,结果成功,但是有一点 ...
取消只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:100 回复次数:5 
刚才无聊 尝试着将二维数组和一维数组进行了一下转换,结果成功,但是有一点(绿线部分)不是很理解,哪位给解释一下
程序代码:
#include <stdio.h>

int main(int argc, char* argv[])
{
    int zip[4][2];
    int i,j;
    //以下是对二维数组进行简单的赋值
    for(i=0;i<4;i++)
    {
        for(j=0;j<2;j++)
        {
            zip[i][j]=(i+1)*(j+1);
        }
    }
    printf("以下是对二维数组进行输出\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<2;j++)
        {
            printf("%4d",zip[i][j]);
        }
    }
    printf("\n\n\n以下是转换一维数组之后的输出\n");
    for(i=0;i<8;i++)
    {
        printf("%4d",(zip[i]-i)[0]);   //这里要加[0] 才能输出具体的元素值
        //printf("%4d",(zip[i]-i));   //注意如果改成这个代码,则输出数组元素地址而不是元素值

    }
    printf("\n\n\n...............over\n");
    return 0;
}



[ 本帖最后由 wp231957 于 2014-1-14 12:47 编辑 ]
2014-01-14 12:46
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
printf("%4d",zip[0][i]);
感觉还是二维呢

DO IT YOURSELF !
2014-01-14 13:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
感谢各位啊 (来着均由分)  现在能够通过编译并得到正确结果的共有4种方法:

程序代码:
#include <stdio.h>

int main(int argc, char* argv[])
{
    int zip[4][2];
    int i,j;
    //以下是对二维数组进行简单的赋值
    for(i=0;i<4;i++)
    {
        for(j=0;j<2;j++)
        {
            zip[i][j]=(i+1)*(j+1);
        }
    }
    printf("以下是按照普通方式对二维数组进行输出\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<2;j++)
        {
            printf("%4d",zip[i][j]);
        }
    }
    printf("\n\n\n以下是第一种转换一维数组之后的输出\n");
    for(i=0;i<8;i++)
    {
        printf("%4d",(zip[i]-i)[0]);

    }
    printf("\n\n\n以下是第二种转换一维数组之后的输出\n");
    for(i=0;i<8;i++)
    {
        printf("%4d",zip[0][i]);

    }
    printf("\n\n\n以下是第三种转换一维数组之后的输出\n");
    for(i=0;i<8;i++)
    {
        printf("%4d",*(zip[i]-i));

    }
    printf("\n\n\n以下是第四种转换一维数组之后的输出\n");
    int *p=&zip[0][0];
    for(i=0;i<8;i++)
    {
        printf("%4d",p[i]);

    }
    printf("\n\n\n...............over\n");
    return 0;
}

DO IT YOURSELF !
2014-01-14 14:47
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用zklhp在2014-1-14 14:51:58的发言:

哈哈 5个错了两个字

拼音输入法害人啊

DO IT YOURSELF !
2014-01-14 14:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用zklhp在2014-1-14 14:50:58的发言:

我感觉楼主的写法太复杂了 又得不到什么好处 还是新定义一个指针好 这样最清晰



我觉得四种方法应该是同源  最清晰的当然是新定义一个指针这种方法

DO IT YOURSELF !
2014-01-14 14:54
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用cxzhzhg在2014-1-15 00:04:00的发言:

楼主的第一、三种方法不能适用于任何样子的二维数组,二列的才有效,好遗憾~



这样改改就没啥问题了  似乎圆满一些了呢


程序代码:
#include <stdio.h>
#define M 5
#define N 5
int main(int argc, char* argv[])
{
    int zip[M][N];
    int i,j;
    //以下是对二维数组进行简单的赋值
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            zip[i][j]=(i+1)*(j+1);
        }
    }
    printf("以下是按照普通方式对二维数组进行输出\n");
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
        {
            printf("%4d",zip[i][j]);
        }
    }
    printf("\n\n\n以下是第一种转换一维数组之后的输出\n");
    for(i=0;i<M*N;i++)
    {
        printf("%4d",(zip[i]-i*(N-1))[0]);

    }
    printf("\n\n\n以下是第二种转换一维数组之后的输出\n");
    for(i=0;i<M*N;i++)
    {
        printf("%4d",zip[0][i]);

    }
    printf("\n\n\n以下是第三种转换一维数组之后的输出\n");
    for(i=0;i<M*N;i++)
    {
        printf("%4d",*(zip[i]-i*(N-1)));

    }
    printf("\n\n\n以下是第四种转换一维数组之后的输出\n");
    int *p=&zip[0][0];
    for(i=0;i<M*N;i++)
    {
        printf("%4d",p[i]);

    }
    printf("\n\n\n...............over\n");
    return 0;
}

DO IT YOURSELF !
2014-01-15 08:18
快速回复:刚才无聊 尝试着将二维数组和一维数组进行了一下转换,结果成功,但是 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018599 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved