我正在尝试将数组存储在堆栈中;
int *orderStack[2];
int orderSize=2;
int orderTop=0;
void pushOrder(int newOrder[2]) {
if(orderTop>=orderSize) {
int i;
int *stack2 = (int*) malloc(sizeof(int)*orderSize*2);
for(i=0; i<orderSize; i++) {
stack2[i] = orderStack[i];
}
orderStack = stack2;
orderSize *= 2;
}
orderStack[numberTop][0] = newOrder[0];
orderStack[numberTop++][0] = newOrder[1];
int temp, i, j, k;
for (j = 0; j < numberTop; ++j) {
for (k = j + 1; k < numberTop; ++k) {
if (orderStack[j][1] > orderStack[k][1]) {
temp = orderStack[j][1];
orderStack[j][1] = orderStack[k][1];
orderStack[k][1] = temp;
}
}
}
}
但是这会导致以下错误:[Error]为该行的数组类型的表达式赋值
orderStack = stack2;
我阅读了20多个有关此错误,数组和堆栈的问题,但找不到我在做什么错。
int * orderStack [2];
在此语句中,您将orderStack声明为数组。编译器在此数组中分配2个插槽,每个插槽可存储一个指向整数的指针。您可以分配给这些插槽:
orderStack[0] = stack1;
orderStack[1] = stack2;
其中stack1和stack2的类型为int *
但是您不能分配orderStack本身-对编译器没有任何意义。
如果您希望能够分配orderStack本身,则可以将其声明为:
int **orderStack;
但是,现在您必须先将其分配给一个数组数组,然后填充该数组的元素(可能是int的数组)