我总是搞不清楚如何正确使用const int*,const int*const,以及int const*。有没有一套规则来定义你能做什么和不能做什么
我想知道在作业、传递到函数等方面的所有注意事项
向后阅读(按顺时针/螺旋线规则驱动):
int*-指向int的指针int-const*-指向常量int的指针int*const-指向int的const指针int const*const-指向const int的const指针
现在,第一个常量可以位于类型的任一侧,因此:
int-const*=int-const*常量int*const=常量int*const
如果你真的想发疯,你可以这样做:
int**-指向int的指针int**const-指向int的指针的常量指针int*const*-指向int的常量指针int-const**-指向常量int的指针int*const*const-指向int的常量指针的常量指针
为了确保我们清楚地理解const的含义:
inta=5,b=10,c=15;
常量int*foo;//指向常量int的指针。
foo=&;a、 //分配到foo指向的位置。
/*伪语句*/
*foo=6;//a的值不能通过指针更改。
foo=&;b、 //指针foo可以更改。
int*常数条=&;c、 //指向int的常量指针
//注意,实际上需要设置指针
//这里,因为您以后无法更改;)
*巴=16;//可以通过指针更改c的值。
/*伪语句*/
巴=&;a、 //不可能,因为bar是一个常量指针。
foo是指向常量整数的变量指针。这允许您更改所指向的内容,但不更改所指向的值。最常见的情况是C样式的字符串,其中有一个指向常量char的指针。您可以更改指向的字符串,但不能更改这些字符串的内容。当字符串本身位于程序的数据段中且不应更改时,这一点很重要
bar是指向可更改值的常量或固定指针。这就像一个没有额外语法糖的引用。由于这一事实,除非需要允许NULL指针,否则通常会使用引用,在引用中使用T*const指针