先上代码:
1
2
3
4
5
6
7
8
9
10
|
void
func(
const
int
** arg)
{
}
int
main(
int
argc,
char
**argv)
{
int
**p;
func(p);
return
0;
}
|
main.cpp: 在函数‘int main(int, char**)’中:
main.cpp:8:8: 错误: 从类型‘int**’到类型‘const int**’的转换无效 [-fpermissive]
main.cpp:1:6: 错误: 初始化‘void func(const int**)’的实参 1 [-fpermissive]
make: *** [main.o] 错误 1
这是因为----------------割
1
2
3
|
const
int
** p1;
// int元素不可修改
int
*
const
* p2;
// int *一级指针不可修改
int
**
const
p3;
// int **二级指针不可修改
|
那么如何解决:
1
|
void
func(
const
int
*
const
* arg)
|
1
2
3
4
5
6
7
8
9
10
11
12
|
typedef
const
int
* INTP;
void
func(
const
INTP * arg)
// const修饰的是INTP,一级指针不可修改
{
}
int
main(
int
argc,
char
**argv)
{
int
**p;
func(p);
return
0;
}
|
参考:
http://chenqi210.iteye.com/blog/1768587
FROM: http://my.oschina.net/xiangxw/blog/123279