Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Intermediate
Jul 10, 1998

String literals are const

According to the C++ standard, the following line is illegal:
 
char *s = "hello world"; //illegal
Though still supported by many compilers, it's deprecated and should be avoided. The reason is that the literal "hello world" is a constant. Storing it in a non-const array of characters is an error, since it may lead to the following bug:
 
strcpy(s, "ab"); //OOPS! undefined behavior. attempt to modify a const object. 
The correct form is:
 
const char *s = "hello world"; //now fine
And as a result, the compiler can detect the bug:
 
strcpy(s, "abc"); //now a compile-time error: strcpy's first argument should be a non-const char*
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date