不加const也可以,为什么在书中作者却要加上const

函数功能:在一个字符串中进行搜索,查找所有在一个指定字符集中出现的字符

#include<stdio.h>

char* 
find_char(char *source,char *chars)
{
    char *temp;
    while(source!=NULL&&chars!=NULL){
        for(;*source!='\0';source++){
            for(temp=chars;*temp!='\0';temp++){
                if(*temp==*source){
                    return source;      
                }
            }
        }
        return NULL;
    }
}
int main()
{
    char *s="hello";
    char *t="hello boy";
    char *dst;
    dst=find_char(s,t);
    puts(dst);
}

const表示一个常量类型,就是不会修改它本身

加上const表示你不希望去修改原字符串,可以避免人为的不小心去修改原字符串, 当然const在c++中的用处跟在c中的有区别,比如说修饰成员函数
表示相应的数据成员不能够被改变,牵扯到一系列底层的问题,比如说对象的逻辑状态与物理状态的关系...

所以说此处加const是很有必要的...

const是为了防止那种错误的修改,使得被const修饰的指针或引用,所指向的对象只能是只读,不能被修改,从而防止了那种错误的修改!

 const char *source ; //则在函数中不能通过指针修改所指向的数组,如:*source='a';这是不合法的,能起到保护主调函数中数组不被修改的作用。
 char * const source; //则说明source是常指针变量,定义时要初始化,以后不能更改;
const char * const source; //则包含了上述两种情况

建议对源数据加const修饰,防止被恶意更改。