首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么不能传二维数组做参数啊解决办法

2012-03-27 
为什么不能传二维数组做参数啊小弟用二维数组做参数时候编译时候就通不过了,出现这样的异常:Compiling...h

为什么不能传二维数组做参数啊
小弟用二维数组做参数时候编译时候就通不过了,出现这样的异常:
Compiling...
hashTable.cpp
D:\vc\MSDev98\MyProjects\hashTable\hashTable.cpp(24)   :   error   C2087:   ' <Unknown> '   :   missing   subscript
D:\vc\MSDev98\MyProjects\hashTable\hashTable.cpp(46)   :   warning   C4508:   'main '   :   function   should   return   a   value;   'void '   return   type   assumed
执行   cl.exe   时出错.

hashTable.exe   -   1   error(s),   0   warning(s)


真是郁闷,应该没有错误啊,源程序如下:
#include   <stdio.h>
#include   <stdlib.h>
#define   KEYTYPE   char

typedef   struct   node
{
KEYTYPE   key[3];
struct   node   *next;
}CHAINNODE;

typedef   struct  
{
        CHAINNODE   c[16];
}CHAINHASH;


CHAINHASH   creatHashTable(KEYTYPE   keys[][])
{
        CHAINHASH   hashTable;
/*为了大哥快速查看程序我把做的事屏蔽了*/
return   hashTable;
}

小弟急啊,帮帮忙,谢谢




[解决办法]
至少第一维的长度要知道的,否则编译器不知道怎么算每个元素的具体位置了。
[解决办法]
CHAINHASH creatHashTable(KEYTYPE keys[16][])
=======================================================
steedhorse(晨星) 说的第一维是右边那一对括号
CHAINHASH creatHashTable(KEYTYPE keys[][50])

传递二维数组,实际上是传递了一个行指针,一定要让编译器知道这个行指针指向多长的行
所以第一对括号可以省略不填,第二对括号一定要填写
CHAINHASH creatHashTable(KEYTYPE keys[][50])
相当于
CHAINHASH creatHashTable(KEYTYPE (*keys)[50])

[解决办法]
能不能参数传为 CHAINHASH creatHashTable(KEYTYPE **keys)?

[解决办法]
**ptra 不等于 (*ptrb)[n]

ptra++ 等于移动一个单位
ptrb++ 等于移动n个单位

除非本身ptrb不是数组,只是一个单位量了.

热点排行
Bad Request.