2016-11-17 127 views
0

之間的區別我知道你會說它是一個複製品,但相信我讀了很多關於這個的文章,但我仍然不能理解什麼是差異,所以即時給兩個例子。
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'的值。首先,對於任何給定的'N',你都不能改變'string [N]'的值。 –

+0

這是正確的,你可以改變指針的值。我說的是'const char * const' –