【发布时间】:2015-06-28 11:10:06
【问题描述】:
在结构中保存指向数组的指针。 我想将指向 int 数组的指针存储到 struct 中,但我遇到了麻烦。
在我的代码下方带有注释:
typedef struct _index {
int *data;
} Index;
void adder(struct _index *s){
int i;
int arr[maxint];
for(i=0; i<maxint; i++) {
arr[i] = i+42;
}
//i got a gibberish
//s->data = arr;
//works fine
s->data = (int *) malloc(maxint * sizeof(int));
s->data = memcpy(s->data, arr, maxint * sizeof(int));
)
int main() {
Index n;
int i;
//this method also works.
//int arr[maxint];
//for(i=0; i<maxint; i++) {
// arr[i] = i+42;
//
//}
//n.data = arr;
adder(&n);
for(i=0; i<maxint;i++) {
printf("%d-", n.data[i]);
}//testing
return 0;
}
当我做作业时,我得到了奇怪的数字: 117-118-119-120-12-0-22-2292964-0-2293008-127-0-129-130-131-0-0-0-0-0-0-138-0
但如果我使用 malloc 和 memcpy 一切正常
【问题讨论】:
-
arr 在栈上,它是一个局部变量。不要投射
malloc结果
标签: c malloc dynamic-memory-allocation local-variables