我对如何制作一个结构数组感到困惑。这是我的代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct line
{
int x;
} *line;
int main()
{
line *array = malloc(10 * sizeof(line));
int i = 0;
for(i; i < 2; i++)
{
array[i]->x = 5;
}
for(i; i < 2; i++)
{
printf("%d\n", array[i]->x);
}
return 0;
}
我的困惑来自以下内容:根据我的理解,如果你有一个typedef并为它指定一个名称,例如* line,那么你可以使用 - &gt;访问和改变结构中的每个项目。符号。我似乎没有把它弄好,也不确定为什么。
我的错误:
分段错误(核心转储)
答案 0 :(得分:5)
您typedef
line
作为指向结构的指针,而不是结构本身。因此,当您malloc
- 基于sizeof line
编辑时,您可以获得十个指针的空间,而不是十个结构的副本。删除*
中line
之前的typedef
,这样就得到了一个结构数组,而不是一个结构的(未分配的)指针数组。然后在索引指针后使用普通的点访问。
如果你真的想要一个指向struct的指针数组,你需要单独分配每个结构,这可能不是你想要的。
答案 1 :(得分:1)
在这里,修复了ya:
function enterPressed(e, field) {
if (e.keyCode == 13) {
var tb = document.getElementById("searchbox");
eval(tb.value);
if (field.value.length > 0) {
document.getElementById('searchdisappear').style.display='none';
}
}
}
答案 2 :(得分:0)
您几乎拥有它,您只需调整语法或为每个结构分配更多内存:
{
"path": "somepath",
"verb": "GET",
"switches": [
{
"name": "id",
"value":"123"
},
{
"name": "age",
"value":"24"
}
]
}
在再次使用之前,您也永远不会重置{
"path": "somepath",
"verb": "GET",
"switches": [
{
"name": "id",
"value":"123"
},
{
"name": "age",
"value":"25"
},
{
"name": "foo",
"value":"bar"
}
]
}
数组索引变量。