//stack.h
struct stack{
int top;
char data[]; //set the size of this array
}s;
void init(){
s.top = -1;
}
int isFull(){
return (s.top==MAX-1) ? 1 : 0;
}
int isEmpty(){
return (s.top==-1) ? 1 : 0;
}
void push(char ch){
if(!isFull()){
s.data[++s.top] = ch;
}else{
printf("\n The stack is full\n");
}
}
char pop(){
return (!isEmpty()) ? s.data[s.top--] : '\0';
}
我想在头文件中实现这个堆栈,并想从外部设置数据数组的大小。我知道这是一个头文件,如果我们更改头变量,它就没有用,但仍然很好奇。
最佳答案
您的结构包含所谓的灵活数组成员。这样的结构可以通过动态分配结构空间加上灵活数组成员所需的大小来创建。
struct stack{
int top;
char data[];
} *s;
void initStack()
{
s = malloc(sizeof(struct stack) + MAX * sizeof(char));
}
关于c - 如何从c中的头文件外部动态设置头文件中数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58956084/