首页
社区
课程
招聘
[讨论]怎么把数据传递给二维指针?
发表于: 2007-11-19 12:40 4119

[讨论]怎么把数据传递给二维指针?

2007-11-19 12:40
4119
代码编译可以通过,运行后异常报错。
不知道哪里错了?

#include <stdio.h>
void Hild(unsigned char **list,int Dx,int Dy);

int main()
{
     unsigned char buf[6][6] = { { 0, 0, 0, 0, 0, 0 },
                                 { 0, 0, 1, 1, 0, 0 },
                                      { 0, 0, 1, 1, 0, 0 },
                                      { 0, 0, 1, 1, 0, 0 },
                                      { 0, 0, 1, 1, 0, 0 },
                                      { 0, 0, 1, 1, 0, 0 } };
     Hild( (unsigned char**)buf, 6, 6);
}

void Hild(unsigned char **list,int Dx,int Dy)
{
     for ( int i = 0; i < Dx; i++)
    {
        for ( int j = 0; j < Dy; j++)
        {
            printf("%d\t", list[i][j]);       
        }
         printf("\n");                      
    }
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
2
list[i][j],要这样使用有个前提:
程序必须知道每一行有几个元素,假设为len则index = i * len + j ;
二维数组 只是一个逻辑概念,真正存储结构还是线性的

void Hild(unsigned char **list,int Dx,int Dy)
在你的函数Hild中不知道一行有几个元素,也就无法正确定位,因此出错

#include <stdio.h>
[COLOR="Red"]#define DEF_LENGTH    6[/COLOR]

void Hild(unsigned char [COLOR="red"](*list)[DEF_LENGTH][/COLOR],int Dx,int Dy)
{
	for ( int i = 0; i < Dx; i++)
	{
		for ( int j = 0; j < Dy; j++)
		{
			printf("%d\t", list[i][j]);  
		}
		printf("\n");          
	}
}

int main()
{
     unsigned char buf[6][DEF_LENGTH] = { { 0, 0, 0, 0, 0, 0 },
                                 { 0, 0, 1, 1, 0, 0 },
                                { 0, 0, 1, 1, 0, 0 },
                                { 0, 0, 1, 1, 0, 0 },
                                { 0, 0, 1, 1, 0, 0 },
                                { 0, 0, 1, 1, 0, 0 } };
     Hild( buf, 6, 6);
     return 0 ;
}
2007-11-19 13:16
0
游客
登录 | 注册 方可回帖
返回