【发布时间】:2016-03-19 06:34:03
【问题描述】:
我 2 个月前开始在大学学习 C++,我试图弄清楚如何将动态二维数组(指向指针的指针)作为输入参数传递给函数。 我有这个动态二维数组:
int **p;
p = new int*[R];
for(i=0; i<R; i++)
p[i] = new int[C];
现在我想使用 const 将此指针 p 作为输入参数传递给函数。我的意思是我希望函数不能修改矩阵的元素。
我试过这样:
void func(const int **p) {
}
但我得到这个错误:
main.cpp:19:11: 错误:从 'int**' 到 'const 的无效转换 int**' [-fpermissive]
main.cpp:9:6: 错误:初始化 'void func(const int**)' [-fpermissive] 的参数 1
我尝试使用 typedef 并且它可以工作,但它不是恒定的。 如果我喜欢这样:
typedef int** abc;
void func(const abc p);
main() {
abc p;
...
func(p);
}
源代码编译但函数'func'能够修改“p矩阵”的值;我希望 p 是一个输入参数,它必须是只读的!
请问,如何将指针传递给将元素标记为只读的函数?
提前感谢您的帮助,并为我的英语不好感到抱歉。
【问题讨论】:
标签: c++ arrays pointers parameters constants