【发布时间】:2016-04-08 12:45:05
【问题描述】:
在下面的代码 sn-p 中,我收到 gcc 编译器警告:“从不兼容的指针类型 initArr(&stack,2); 传递 initArr 的参数 1;” 和注释:“预期为 'struct Arr *' 但参数的类型为 'struct Arr**'” 这对我来说很有意义。
正如许多 SO 帖子所建议的那样,从对 initArr(&stack, 2) 的调用中删除 & 符号会导致另一个警告:“'stack' is used unitialized in this function: 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 谢谢你,我会努力合并你的格式。
标签: c