int count_x(const char* p, char x)
// count the number of occurrences of x in p[]
// p is assumed to point to a zero-terminated array of char (or to nothing)
{
if (p==nullptr)
return 0;
int count = 0;
for (; *p!=0; ++p)
if (*p==x)
++count;
return count;
}
p是一个指针。 const表示不能修改指针。但是在for循环中,存在++ p,这意味着正在对指针进行遍历/递增,以访问值* p
那里有一个矛盾-p不能被修改但是正在被递增/修改?
答案 0 :(得分:2)
C ++中的声明从右到左读取。所以像
const char* p
将读取:p
是指向const char
的非常量指针。
很明显,p
不是const
,但是它指向的是const
。因此*p = 's'
是非法的,但p++
不是非法的。