2016-11-17 25 views
0

私はあなたがそのことについて重複しているとは思いますが、私はこれについて記事をたくさん読んでいますが、私はまだdiffrenceが何であるかを理解しています。
1.C++ const char *とchar *の違いを理解できない

int strlen(const char* string) 
{ 
    int i = 0; 
    while (string[i] != '\0') 
    { 
     ++i; 
    } 
    return i; 
} 

2.

int strlen(char* string) 
{ 
    int i = 0; 
    while (string[i] != '\0') 
    { 
     ++i; 
    } 
    return i; 
} 

メイン:

int main() 
{ 
    char str[] = "Hello"; 
    cout << strlen(str) << endl; 
} 

目は仕事と文句を言わない最初の文句を言わないしながら、エラーが発生します。

+3

最初のエラーは何ですか? – grigor

+0

また 'char * const'も考慮してください。これは他のものと異なります。 – Sergey

+0

最初はうまくいくはずです。 – theVoid

答えて

1

ケース1:の変更値がstringでない場合は、読み取り専用です。関数がパラメータの値を変更しないようにするために使用されます(最小特権の原則

ケース2:stringの値を変更できます。

また、コメントからそのリンクを確認してください。

+0

いいえ、正しくありません。どちらの関数でも 'string'の値を変更することができます。最初の '' string''の '' string''の値を変更することはできません。 –

+0

それは正しいです、あなたはポインタの値を変更することができます。私が言ったのは 'const char * const'です –

関連する問題