常量指针C ++ Stroustrup

时间:2018-09-24 01:15:30

标签: c++ pointers const

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不能被修改但是正在被递增/修改?

1 个答案:

答案 0 :(得分:2)

C ++中的声明从右到左读取。所以像

const char* p

将读取:p是指向const char的非常量指针。

很明显,p不是const,但是它指向的是const。因此*p = 's'是非法的,但p++不是非法的。