这是retstr。
的函数声明语句的错误“prog.cpp:5:错误:在'''标记之前预期的unqualified-id prog.cpp:5:错误:在'['token“
之前的预期初始值设定项以下是代码:
#include<stdio.h>
#include<math.h>
int n;
char *[] retstr(int k)
{
char* ans[10];
return(ans);
}
答案 0 :(得分:3)
首先,如果你想声明一个返回10个char *
指针的原始数组的函数,那么正确的语法就是
char *retstr(int k)[10]
{
char* ans[10];
return ans;
}
但是,这没有解决任何问题,因为C和C ++函数都不允许直接返回数组。因此,即使使用正确的语法,直接尝试返回原始数组也不起作用。
从其他答案中已建议的方法中选择不同的方法。
答案 1 :(得分:1)
char *[]
不是一种类型。这是一个语法错误。您可能想要的是
char **function()
{
}
但是,再次,您将返回一个自动数组,它将调用未定义的行为。为什么不让你的函数填充字符串向量呢?
void function(std::vector<std::string> &v)
{
v.push_back("foo");
v.push_back("bar");
}
答案 2 :(得分:0)
在C ++中不能返回数组。
你的函数实际上返回一个指向ans
的第一个元素的指针,这也是坏消息,因为该数组在堆栈上声明并超出范围函数返回后。
正确的做法是从C ++标准库中选择适当的数据结构并使用它。如果出于某种原因你设置了基本类型,你需要提出一个不同的解决方案 - 例如,可以在函数内动态分配数组并返回一个指向它的指针。例如。
答案 3 :(得分:0)
试试这个:
#include<stdio.h>
#include<math.h>
int n;
char ** retstr(int k)
{
char** ans = (char**) malloc(10 * sizeof(char*));
return ans;
}