我有一个需要返回一个数组的函数,因为这是不可能的,而是返回指向该数组的指针。然后我需要在main函数中打印这个数组。我该怎么做?
这是我的意思的一个例子:
char* myFunction (void)
{
char myArray[5] = {'one','two','three','four','five'};
return myArray;
}
int main(void)
{
printf("%s",myFunction);
return 0;
}
但这只是打印指针:uF $。或者,如果我将函数打印为整数,则打印:791013。 那么我如何实际打印数组中的5个元素呢?
谢谢!
答案 0 :(得分:6)
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;
}
答案 1 :(得分:0)
正如Kerrek所指出的,这段代码有很多问题。其中两个是
1.您不能像这样声明char
数组
char myArray[5] = {'one','two','three','four','five'};
2.您无法返回指向自动局部变量的指针,此处指针为myArray
(衰减后)。这将调用未定义的行为。
答案 2 :(得分:0)
在这个例子中,你不能打印数组,因为它根本就不是格式良好的字符串。
当然我们可以给你正确的答案,我们给你正确的代码片段,但我认为在这种情况下,了解C的基本元素会更有用。你可能需要阅读更多关于字符文字和字符串。预订Kernigan和Ritchie的C编程语言将为您提供更好的信息来源。您只需阅读第1章 - 教程简介,您就可以了解主要想法。
答案 3 :(得分:0)
当我写这段代码时,先生们已经回答了这个问题。您可以使用以下代码来完成。请注意,我没有释放内存。您必须释放字符串str [x]和str
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char** create_array();
int main(int argc, char** argv) {
char** str = create_array();
while (*str) {
printf("%s\n", *str);
++str;
}
return (EXIT_SUCCESS);
}
char** create_array() {
char** strings = (char**) malloc(sizeof (char*) * 6);
strings[0] = strcpy(malloc(sizeof ("abc")), "abc");
strings[1] = strcpy(malloc(sizeof ("two")), "two");
strings[2] = strcpy(malloc(sizeof ("three")), "three");
strings[3] = strcpy(malloc(sizeof ("four")), "four");
strings[4] = strcpy(malloc(sizeof ("five")), "five");
strings[5] = 0; //Ends the loop
return strings;
}
答案 4 :(得分:0)
你的数组中有声明错误char只有1个字符'@' 无论你能做什么都是
char myArray[5] = {'o','n','e',',','t','w','o',',','t','h','r','e','e',',','f','o','u','r',',','f','i','v','e'};
然而它只是不可读,我建议使用字符串 或者char ** myArray; 使数组关闭char数组:-B
printf("%s",myFunction);
永远不会工作,因为c中的函数调用必须有() 固定:
tempArray = myFunction();
for (i=0;i<5;i++)
printf("%c",tempArray[i]);
答案 5 :(得分:0)
string str_array[5] = { "one", "two", "three", "four", "five" };
string* pointer = &str_array[0];
for(int i=0; i<5; ++i)
cout << *pointer++ << endl;
OR
#include <stdio.h>
#include <stdlib.h>
char** myFunction()
{
char** myArray = (char**)malloc(sizeof(char*)*5);
myArray[0] = "one";
myArray[1] = "two";
myArray[2] = "three";
myArray[3] = "four";
myArray[4] = "five";
return myArray;
}
int main()
{
char** result = myFunction();
for(int i=0; i<5; i++)
printf("%s\n", result[i]);
free(result);
system("PAUSE");
}