foo*_*foo 14 c function-pointers
我试图在C中创建一个堆栈以获得乐趣,并想出了使用struct来表示堆栈的想法.然后我为push()和pop()操作添加了结构的函数指针.
到目前为止看起来一切都很好,但是,对于push()和pop()函数的实现,我需要以某种方式引用*.怎么能(可以吗?)完成?
这是我的结构
struct Stack {
int *data;
int current_size;
int max_size;
int (*push)(int);
int (*pop)();
};
Run Code Online (Sandbox Code Playgroud)
作为一个例子,这是推动
int push(int val) {
if(current_size == max_size -1)
return 0;
data[current_size] = val;
current_size++;
return 1;
}
Run Code Online (Sandbox Code Playgroud)
你可以想象,编译器不知道是什么current_size,就像它期望的那样stack->current_size.
这有可能以某种方式克服吗?
NPE*_*NPE 27
thisC中没有隐含的内容.明确说明:
int push(Stack* self, int val) {
if(self->current_size == self->max_size - 1)
return 0;
self->data[self->current_size] = val;
(self->current_size)++;
return 1;
}
Run Code Online (Sandbox Code Playgroud)
您当然必须将指向结构的指针传递给每个调用push和类似的方法.
这基本上是C++编译器在您定义Stack为类和push等方法时为您所做的事情.