我正在处理任务并遇到具有挑战性的问题。就我而言,从我所了解的情况来看,后面的代码应该是正确的,但它不起作用。基本上我想要的是将一个字符串值复制到一个结构的变量成员中,该结构是作为指针传递给方法的数组的一部分。我错过了什么?更改结构数组元素中的值
typedef struct
{
char * name; //variable in struct I am trying to access
} Struct;
void foo(Struct * arr) //array of Structs passed into function as a pointer
{
int i = 0;
while(i++ < 2)
{
arr[i].name = malloc(sizeof(char *)); //assigning memory to variable in each Struct
arr[i].name = strdup("name"); //copying "name" to variable in each Struct
printf("C - %s\n", arr[i].name); //printing out name variable in each Struct
}
}
main()
{
Struct * arr; //defining pointer
arr = calloc(2, sizeof(Struct)); //allocating memory so pointer can hold 2 Structs
foo(arr); //calling function foo passing pointer into function
return 0;
}
该代码编译并运行,但它不做它设计的目的。请原谅我,如果这是微不足道的。我是新来的C语言
'typedef结构Struct'是一个非常,非常*,* ***非常糟糕想法*** – 2013-10-10 20:58:25
我使用“结构”只是为了使它在阅读时明显表明我正在使用指针作为结构数组 – etienz
1.数组的基本类型是不相关的。但是从声明中可以看出,这是一小段代码。 3.如果你想使它明确无误,那么不要typedef,并使用'struct Foo array [100];'中的'struct'关键字。不要造成混淆。请稍等。 – 2013-10-10 21:01:45