在下面的代碼片段中,我得到一個gcc編譯器警告:「從不兼容的指針類型initArr(& stack,2)傳遞initArr的參數1;」 和一個註釋:「預期的'結構Arr *'但參數的類型是'struct Arr **''」 這對我來說非常有意義。如許多SO帖子所暗示的那樣,將呼叫的和號從initArr(&stack, 2)
中刪除,但是會導致另一個警告:「'堆棧'在此函數中被單位化使用:init(stack,2);」並在運行時立即發生段錯誤。編譯器警告和筆記,但下降並不起作用
我在做什麼不正確?
我也試過在malloc sizeof調用中使用struct arr,並且如預期的那樣,沒有改變。
#include<stdio.h>
#include <stdlib.h>
#define TYPE int
struct Arr {
TYPE * data; // Pointer to the data array.
int size; // Number of elements in the array.
int capacity; // Capacity of the array.
};
void initArr(struct Arr * da, int capacity) {
da->data = malloc(sizeof(TYPE) * capacity);
da->size = 0;
da->capacity = capacity;
}
int main() {
struct Arr *stack;
initArr(&stack, 2);
return 0;
}
@chux謝謝你,我會盡力把你的格式化。 – Chris