当前位置: 代码迷 >> C语言 >> 这哪儿错了?晕了
  详细解决方案

这哪儿错了?晕了

热度:213   发布时间:2006-12-23 17:19:48.0
这哪儿错了?晕了

我写了一段程序,用VC编译,说以下有下划线的地方有错:
void HuffmanCodebuid (HuffmanTree HT,int n,int* Code)
{
int start,c,i,f;
char cd[n];
for(i=1;i<=n;++i)
{start=n-1;
for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)//反向存入内存,得到正向Huffman编码
if(HT[f].lchild==c) cd[--start]="0";//左子是0,右子是1
else cd[--start]="1";

}
printf("%s\n",cd);
Compress(cd,n,start,Code);
free(cd);//释放工作空间
}

调试信息如下:
--------------------Configuration: Huffman - Win32 Debug--------------------
Compiling...
Huffman.cpp
D:\我的文档\数据结构\Huffman\Huffman.cpp(51) : error C2057: expected constant expression
D:\我的文档\数据结构\Huffman\Huffman.cpp(51) : error C2466: cannot allocate an array of constant size 0
D:\我的文档\数据结构\Huffman\Huffman.cpp(51) : error C2133: 'cd' : unknown size
D:\我的文档\数据结构\Huffman\Huffman.cpp(55) : error C2440: '=' : cannot convert from 'char [2]' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
D:\我的文档\数据结构\Huffman\Huffman.cpp(56) : error C2440: '=' : cannot convert from 'char [2]' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
执行 cl.exe 时出错.

Huffman.exe - 1 error(s), 0 warning(s)
我觉得对了阿,没错阿,为什么他说有错?请各位指教


----------------解决方案--------------------------------------------------------

字符数组定义时可以用变量吗?

[此贴子已经被作者于2006-12-23 17:26:53编辑过]


----------------解决方案--------------------------------------------------------
没用变量阿
n是从函数外传进来的一个整形常数
----------------解决方案--------------------------------------------------------
free(cd);我觉得你既然没有申请空间,又为什么要释放呢?一般上他都是和malloc一起使用的。
----------------解决方案--------------------------------------------------------
哦,不好意思,我起初是用malloc来分配数组空间的 ,后来改成用char 声明,忘记删free了
----------------解决方案--------------------------------------------------------
char cd[n];不能这样定义吧
char为字符型,cd[--start]="0";
else cd[--start]="1";/*""为字符串*/

----------------解决方案--------------------------------------------------------

字符数组定义时可以用变量吗?

不可以


----------------解决方案--------------------------------------------------------
我只学C,但是还没学完.
----------------解决方案--------------------------------------------------------
以下是引用何必天才在2006-12-23 20:09:26的发言:

字符数组定义时可以用变量吗?

不可以

C++,C89不可以,C99可以
----------------解决方案--------------------------------------------------------

  相关解决方案