2016-11-17 5 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 [N]' для любого заданного 'N'. –

+0

Правильно, вы можете изменить значение указателя. Я сказал, что 'const char * const' –