【发布时间】:2011-04-16 21:08:39
【问题描述】:
有没有办法做我在第 2 行和第 3 行所做的事情,并且与第 1 行类似?
如果我只放第 1 行,那么“a”和“one.index1”都将指向相似的位置,这是我不想要的。我真正想要的是由第 2 行和第 3 行完成。那么,这是唯一的方法,还是任何人都可以提供更好的方法?
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int *index1;
} data;
void doo(int *);
int main(int argc, char *argv[])
{
int *a = (int *) malloc(10*sizeof(int));
int i;
for(i=0; i<10; i++)
{
a[i] = 2*i;
}
doo(a);
data one;
//one.index1 = a; // Line 1
/*******************/
one.index1 = (int *) malloc(5*sizeof(int)); // Line 2
for(i=0; i<5; i++) one.index1[i] = a[i]; // Line 3
/*******************/
printf("%d\n", one.index1[4]);
free(a);
printf("%d\n", one.index1[4]);
free(one.index1);
return 0;
}
void doo(int *b)
{
b = (int *) realloc(b, 5*sizeof(int));
return;
}
提前致谢!
【问题讨论】:
标签: c