注册 登录
编程论坛 C++教室

在参数中应用指向常量的指针

吖吼 发布于 2019-03-10 08:07, 1877 次点击
int strcompare( const char  *str1,const char *str2)
{
    for(;*str1!=0||*str2!=0;str1++,str2++)
    {
        if(*str1>*str2)
            return 1;
        else if(*str1<*str2)
            return -1;
    }
    return 0;
}
这个被调函数是比较字符串大小的,虽然成功了但是却不明白这个函数的运算过程,与不是const又有什么区别
3 回复
#2
Jonny02012019-03-10 11:38
加 const 是仅仅告诉编译器在这个函数内指针指向的内存不会发生变动
因为传入的并不是 const char *&, 所以函数内随意对指针进行操作不会改动外面的指针
然后里面的 for 循环是从第一个指针开始走向最后一个指针, 并且比较指针的内容, 此时指针的内容仅仅是单个 char 字符
另外, const char * 和 char *const 是不一样的, 一个限制指针指向的内容, 一个限制指针本身
#3
吖吼2019-03-10 13:12
内存不会发生改变,但是在这个被调函数这个指针常量可也改变,是这样理解么?
#4
Jonny02012019-03-10 21:14
回复 3楼 吖吼
是的
1