嗨,我是编程新手,我正在进入第二学期,所以请耐心等待我的问题,因为这不是作业,我只是想看看一些事情是如何工作的。
我有一个程序,我想演示如何从一个类方法返回一个二维数组。我正在阅读我的课本,它说"get"方法使它们const,这样程序员就不会无意中对私有变量进行更改。
好了,这就是我为一个[10][10]二维字符数组想出的方法:
//private member is:
private:
char array[10][10];
//method prototype
public:
const char(* getArray()const )[10];
//and then the actual method itself
const char(* getArray()const )[10]
{
return array;
}
这是有效的,但我想知道这是正确的代码(我相信这不是由于它迫使我把const char*之前,而所有的const使用的例子在get方法我找到在线和在书中只有在行的末尾有const),为什么它工作?我试着做char (* getArray1())[10] const;但这不起作用,编译器抱怨它希望在const之前有{,但这不是我想做的。
我也知道,如果这是一个1D数组,它将只是简单地:
char* getArray() const;
因为我测试过了,它可以工作。我看到另一个网页说明了如何使用1D数组来代替2D数组所以我已经知道了,但这基本上会创建一个100的新数组(array[100],基本上是array[10 * 10])
我看过这里的其他示例,我也意识到这可能返回所谓的"衰减数组",以及其他可能的不良编码技术等。
但是如果我做对了,让我知道。如果没有,让我知道你的想法。
谢谢
试试typedef char const (*array_t)[10]; array_t getArray() const