2016-03-11 4 views
0

Почему «строка» относится к категории констант на языке C? даже если он не имеет численного значения, связанного с ним, в отличие от «константы символа», которая имеет фиксированное целочисленное значение (значение ASCII), связанное с ним. В какой ссылке строка рассматривается как константа на языке C?Почему «строка» считается «константой» на языке C?

+1

'даже если он не имеет численного значения, связанного с ним,' ... что вы имеете в виду? –

+0

уточните свой вопрос больше –

+1

Или лучше, удалите его и прочитайте несколько первых глав в C для книги для новичков. Очевидно, что никаких предварительных исследований не было. –

ответ

0

Потому что это букваль, и предполагается, что литералы не изменяются.

Рассмотрим пример

char *s = "Shubhamdubey2111"; 
char name[strlen(s) + 1]; 

strcpy(name, s); 

//... 

*s = 'C'; 

//... 

if (strcmp(name, "Shubhamdubey2111") == 0 ) 
{ 
    // Oops! Do not trust your eyes! 
} 
+0

.. Спасибо за ваш ответ! –

+0

@ Shubhamdubey2111 Нет вообще. Добро пожаловать.:) –

0

строковые литералы хранятся в инициализируется только для чтения область памяти процесса. По этой причине строковые литералы не могут быть изменены.