W***o 发帖数: 6519 | 1 这是一个作业,是应用这个提供的data structure Steque 控制程序里object的流向和
path。
源码贴这里了 http://pastebin.com/VzvcdJKu
我现在对如何使用这个data structure糊涂,从java过来的,不知道在C里面怎么初始
化一个object.
我自己想做一个下面的初始化测试:
typedef struct steque_t steque;
steque *stq;
int i;
for(i = 0; i < 10; i++)
{
steque_item *item = malloc(sizeof(steque_item)); // 这样初始化一个
item
steque_enqueue(stq, item); //然后把item enqueue到stq数据结构里面
}
可是目前这么做的结果是编译时报错:
gcc stequeTest.c -o stequeTest
stequeTest.c: In function ‘main’:
stequeTest.c:19:6: warning: passing argument 1 of ‘steque_enqueue’ from
incompatible pointer type [enabled by default]
steque.h:28:6: note: expected ‘struct steque_t *’ but argument is of type
‘struct steque *’
/tmp/ccxO1ZWh.o: In function `main':
stequeTest.c:(.text+0x2e): undefined reference to `steque_enqueue'
collect2: ld returned 1 exit status
想请教一下,在C里面如何初始化一个data structure object? 知道这个我下面的程序
就会写了,谢谢 |
s******y 发帖数: 416 | 2 用new,malloc不触发初始化函数
循环里有leak
【在 W***o 的大作中提到】 : 这是一个作业,是应用这个提供的data structure Steque 控制程序里object的流向和 : path。 : 源码贴这里了 http://pastebin.com/VzvcdJKu : 我现在对如何使用这个data structure糊涂,从java过来的,不知道在C里面怎么初始 : 化一个object. : 我自己想做一个下面的初始化测试: : typedef struct steque_t steque; : steque *stq; : int i; : for(i = 0; i < 10; i++)
|
n*****t 发帖数: 22014 | 3 1、typedef 写错了
typedef struct steque steque_t;
2、malloc 可以这么写:
steque_item *item = (steque_item *) malloc(sizeof(steque_item));
或者:
steque_item *item = (steque_item *) malloc(*item);
3、stq 初始化了吗?
【在 W***o 的大作中提到】 : 这是一个作业,是应用这个提供的data structure Steque 控制程序里object的流向和 : path。 : 源码贴这里了 http://pastebin.com/VzvcdJKu : 我现在对如何使用这个data structure糊涂,从java过来的,不知道在C里面怎么初始 : 化一个object. : 我自己想做一个下面的初始化测试: : typedef struct steque_t steque; : steque *stq; : int i; : for(i = 0; i < 10; i++)
|
d****i 发帖数: 4809 | 4 C里面不是必要的话尽量不要malloc吧,比如你的例子可以简单写成:
typedef struct steque steque_t;
steque_t stq;
int i;
struct steque_item item[10];
for(i = 0; i < 10; i++)
{
steque_enqueue(&stq, &item[i]);
}
假设你的steque_enqueue函数的signature是
void steque_enqueue(struct steque_t *, struct steque_item *);
注意typedef的顺序是:
typedef existing_type new_type_name; |
n*****t 发帖数: 22014 | 5 malloc 的可以传递给其他函数,不然这个 queue 只能写成 globe 的了
【在 d****i 的大作中提到】 : C里面不是必要的话尽量不要malloc吧,比如你的例子可以简单写成: : typedef struct steque steque_t; : steque_t stq; : int i; : struct steque_item item[10]; : for(i = 0; i < 10; i++) : { : steque_enqueue(&stq, &item[i]); : } : 假设你的steque_enqueue函数的signature是
|
d****i 发帖数: 4809 | 6 depends on how you implement the function steque_enqueue and the queue
【在 n*****t 的大作中提到】 : malloc 的可以传递给其他函数,不然这个 queue 只能写成 globe 的了
|
n*****t 发帖数: 22014 | 7 这个当然 depends,就这个例子,enqueue 之后如果需要别的 function dequeue,还
是应该 malloc
【在 d****i 的大作中提到】 : depends on how you implement the function steque_enqueue and the queue
|