...
As string literals are constant, they should only be assigned to constant pointers.
Non-
...
Compliant Code Example 1
The const keyword is not included in these declarations.
| Code Block | ||
|---|---|---|
| ||
char* c1 = "Hello"; // Bad: assigned to non-const char c2[] = "Hello"; // Bad: assigned to non-const char c3[6] = "Hello"; // Bad: assigned to non-const c1[3] = 'a'; // Undefined (but compiles) |
...
Compliant Solution 1
If you properly assign string literals to const pointers, the compiler will not allow direct manipulation of the contents.
| Code Block | ||
|---|---|---|
| ||
char* const c1 = "Hello"; // Good char const c2[] = "Hello"; // Good char const c3[6] = "Hello"; // Good //c1[3] = 'a'; would cause a compile error |
Non-
...
Compliant Coding Example 2.a
Though it is not compliant with the C Standard, this code executes correctly if the contents of CMUfullname are not modified.
| Code Block | ||
|---|---|---|
| ||
char* CMUfullname = "Carnegie Mellon";
/* get school from user input and validate */
if (strcmp(school,"CMU")) {
school = CMUfullname;
}
|
Non-
...
Compliant Coding Example 2.b
Adding in the const keyword will generate a compiler warning, as the assignment of CMUfullname to school discards the const qualifier. Any modifications to the contents of scholl after this assignment will lead to errors.
...