我有一个函数需要返回一个数组,因为这是不可能的,它会返回指向该数组的指针。然后我需要在主函数中打印这个数组。我该怎么做?
以下是我的意思的示例:
char* myFunction (void)
{
char myArray[5] = {'one','two','three','four','five'};
return myArray;
}
int main(void)
{
printf("%s",myFunction);
return 0;
}
但这只是打印指针:uF$。或者,如果我将函数打印为整数,它会打印:791013。 那么我如何实际打印数组中的 5 个元素呢?
谢谢!
最佳答案
char* myFunction (void)
{
char myArray[5] = {'one','two','three','four','five'}; // WRONG see 1 and 2
return myArray; // WRONG see 3
}
int main(void)
{
printf("%s",myFunction); // WRONG see 4
return 0;
}
- 字符串需要“”而不是“”(用于单个字符)
- char foo[5] 是一个字符数组。字符串本身是字符数组,因此您需要 char * foo[5]
- 您不能返回本地声明的数组(通常,您不能返回指向本地声明的数据的指针,因为它存在于堆栈中,并且一旦函数返回就无效)
- myFunction 是一个函数,如果想调用它,你需要在它后面加上 () 。但 %s 无论如何都不起作用,因为 %s 用于打印字符串。您需要一个 for 循环来迭代数组,然后使用 %d 打印出整数。但是,由于这是 C++,因此您可能应该使用 cout 而不是 printf(C std 库函数)。
关于c++ - 如何使用指针打印数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20307416/