GOEDUHUB Online Courses || Last Batch Student's Projects || COVID-19 Projects(AI-ML) || Universities  ||  Placement Preparation  
+91-7976731765 Free Online Tutorials ||  MACHINE LEARNING || Python || DBMS || OOPs || DSA || Java || Linux/Unix ||  C Programming
0 like 0 dislike
9 views
in Tutorial & Interview questions by Goeduhub's Expert (8k points)

A string literal in C is a sequence of chars, terminated by a literal zero.

1 Answer

0 like 0 dislike
by Goeduhub's Expert (8k points)
 
Best answer

A string literal in C is a sequence of chars, terminated by a literal zero.

char* str = "hello, world"; /* string literal */ 

/* string literals can be used to initialize arrays */

char a1[] = "abc"; /* a1 is char[4] holding {'a','b','c','\0'} */

char a2[4] = "abc"; /* same as a1 */

char a3[3] = "abc"; /* a1 is char[3] holding {'a','b','c'}, missing the '\0' */

String literals are not modifiable (and in fact may be placed in read-only memory such as .rodata). Attempting to alter their values results in undefined behaviour.

char* s = "foobar";

s[0] = 'F'; /* undefined behaviour */ 

/* it's good practice to denote string literals as such, by using `const` */

char const* s1 = "foobar";

s1[0] = 'F'; /* compiler error! */

Multiple string literals are concatenated at compile time, which means you can write construct like these. 

Version < C99

/* only two narrow or two wide string literals may be concatenated */

char* s = "Hello, " "World";

Version ≥ C99

/* since C99, more than two can be concatenated */

/* concatenation is implementation defined */

char* s1 = "Hello" ", " "World"; 

/* common usages are concatenations of format strings */

char* fmt = "%" PRId16; /* PRId16 macro since C99 */

String literals, same as character constants, support different character sets.

/* normal string literal, of type char[] */

char* s1 = "abc"; 

/* wide character string literal, of type wchar_t[] */

wchar_t* s2 = L"abc";

Version ≥ C11

/* UTF-8 string literal, of type char[] */

char* s3 = u8"abc"; 

/* 16-bit wide string literal, of type char16_t[] */

char16_t* s4 = u"abc"; 

/* 32-bit wide string literal, of type char32_t[] */

char32_t* s5 = U"abc";

Related questions

 Placements:   List of companies | Logical Reasoning Questions | Quantitative Aptitude Questions | General English Questions | Technical-MCQ and Interview Questions
 Important Lists: List of NITsList of IITsList of Exams After Graduation | List of Engineering Entrance Examinations (UG/PG)College ReviewsCollege Fest, Events & WorkshopsKnowledge ShareTrainees/Interns After 15-04-2020
Exams & Cutoffs: JEE Main | JEE Advanced | GATE | IES | ISROList of PSUs || Cutoff-GATECutoff_IIT-JEECS-ScopeECE ScopeEE-Scope
 Download Previous Year Papers For:  GATE | IES | RAJASTHAN TECHNICAL UNIVERSITY (RTU-Kota)RPSC Technical Exams | ISRO
 Goeduhub
About Us | Contact Us   Social::   |  | 
...