大人试试在VC纯C环境下用const和//
你试试行吗?这两个可是C99里的--如果我没记错的话。
[此贴子已经被作者于2006-10-15 18:27:42编辑过]
----------------解决方案--------------------------------------------------------
谢谢lj_860603,我终于有些理解了。
----------------解决方案--------------------------------------------------------
老K说不用malloc和free等内存操作函数的才是真正的变长数组,我同意这样的观点。
但是在更早的版本中是不支持变长数组的,所以我们只好用链表去伪装一个。
但是这个伪装必须伪装得像点样子--至少你能重用你的这个部分的代码--这就要我们必须把他们伪装成为一个面向对象的类
----------------解决方案--------------------------------------------------------
c99支持,C89不支持
C99 也支持这个吗?
这个还真不清楚...
如果这样的话..那么我也认为 用malloc和new 不应该属于变长数组的范畴
vector就是利用这个来实现的..原理好象和lj说的差不多.
----------------解决方案--------------------------------------------------------
细看了一下..vector的实现和lj说的原理是一样的.
而且更为灵活.
我还是先 找下 C99所支持的变长数组的资料去吧..^_^
----------------解决方案--------------------------------------------------------
至于结构体么,也是可以用的
#include <stdio.h>
void fun(int s)
{
struct Test
{
int a[s];
int b;
}test;
for(int i=0;i<s;i++)
{
test.a[i]=i;
}
for(int i=0;i<s;i++)
{
printf(" %d ",test.a[i]);
}
printf("\n");
}
int main()
{
for(int a=10;a<20;a++)
fun(a);
return 0;
}
嘿嘿.见识了..可以实现.
----------------解决方案--------------------------------------------------------
可以预先留位置,让其变长
----------------解决方案--------------------------------------------------------
27楼你应该从头看一次
----------------解决方案--------------------------------------------------------
忘了说明,DB2中使用C的时候才能预留,纯C环境不行的
----------------解决方案--------------------------------------------------------
大人试试在VC纯C环境下用const和//
你试试行吗?这两个可是C99里的--如果我没记错的话。
我可以肯定在VC纯C环境下绝对支持const和//
虽然,我不用VC
另外,我再纠正上面几贴中有些观点是模糊的或者错误的,对于变长数组,C89标准不支持,C++标准不支持,唯有C99标准才支持,也就是说C89标准中没有变长数组这个概念,C99标准中才出现变长数组这个概念,到了C++标准又把它给废弃。
----------------解决方案--------------------------------------------------------