1de*_*der 6 c arrays linked-list
我们有一个学校项目,任何使用C的信息系统.为了保留动态大小的学生记录列表,我选择了一个链表数据结构.今天早上我的朋友让我看看他的系统.我对他的记录清单感到惊讶:
#include <stdio.h>
/* and the rest of the includes */
/* global unsized array */
int array[];
int main()
{
int n;
for (n=0; n < 5; n ++) {
array[n] = n;
}
for (n=0; n < 5; n ++) {
printf("array[%d] = %d\n", n, array[n]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
与代码一样,他声明了一个未整理的数组,它是整个程序的全局(在bss段中).他能够通过用非零值的值覆盖后续的内存块来为数组添加新条目,这样他就可以遍历数组:
for (n=0; array[n]; n++) {
/* do something */
}
Run Code Online (Sandbox Code Playgroud)
他用过(我也用它测试过)Turbo C v1.我在linux中尝试过它也可以.
由于我之前从未遇到过这种技术,我认为它存在问题.所以,是的,我想知道为什么这是一个坏主意,为什么更喜欢这个链接列表.
int array[];
Run Code Online (Sandbox Code Playgroud)
技术上称为不完整类型的数组.简单地说它相当于:
int array[1];
Run Code Online (Sandbox Code Playgroud)
这不好只是因为:
归档时间: |
|
查看次数: |
3432 次 |
最近记录: |