为什么不能传二维数组做参数啊
小弟用二维数组做参数时候编译时候就通不过了,出现这样的异常:
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不是数组,只是一个单位量了.