我想将数组索引从我的函数传递给main。我怎样才能做到这一点? 例如:
void randomfunction()
{
int i;
char k[20][10];
for (i=0;i<20;i++)
strcpy(k[i], "BA");
}
int main(int argc, char *argv[])
{
int i; for (i=0;i<20;i++) printf("%s",k[i]);
return 0;
}
我知道对你来说这很简单,但我发现了类似的话题,对我来说太复杂了。我只想将k数组传递给main。当然我的目的不是用“BA”字符串填充它......
答案 0 :(得分:2)
您想要动态分配内存。像这样:
char** randomfunction() {
char **k=malloc(sizeof(char*)*20);
int i;
for (i=0;i<20;i++)
k[i]=malloc(sizeof(char)*10);
//populate the array
return k;
}
int main() {
char** arr;
int i;
arr=randomfunction();
//do you job
//now de-allocate the array
for (i=0;i<20;i++)
free(arr[i]);
free(arr);
return 0;
}
答案 1 :(得分:2)
这是另一种选择。这是有效的,因为struct
可以被复制,与数组不同。
typedef struct
{
char arr[20][10];
} MyArray;
MyArray random_function(void)
{
MyArray k;
for (i=0;i<sizeof k.arr / sizeof k.arr[0];i++)
strcpy(k.arr[i], "BA");
return k;
}
int main()
{
MyArray k = random_function();
}
答案 2 :(得分:1)
最简单的方法:
void randomfunction(char k[][10])
{
// do stuff
}
int main()
{
char arr[20][10];
randomfunction(arr);
}
如果randomfunction
需要知道维20
,您可以将其作为另一个参数传递。 (由于历史原因,将它放在[]
中并不起作用。)