const char single pointer
In this section, you are going to learn
What is
const char a = 5;
?What is
char const a = 5;
?What is
const char *p = &a;
?What is
char const *p = &a;
?What is
char *const p = &a;
?What is
const char *const p = &a;
?
Inorder to answer above questions, let us remember a very simple rule
Anything after
const
keyword CAN NOT be changed
Is it that simple ?
Yes. Let us see how do we apply above rule to answer the questions
Step 1 : Consider the statement
const char a = 5;
Step 2 : Remove all keywords after
const
const a = 5;
Step 3 : Remove everything before
const
const a = 5;
Step 4 : Remove assignment
const a;
Step 5 : Now apply the rule. Anything after
const
keyword CAN NOT be changed
We see
a
afterconst
Means, variable
a
CAN NOT be changed again in next line
const char a = 5;
a = 10; // --> This is invalid
Step 1 : Consider the statement
const char *p = &a;
Step 2 : Remove all keywords after
const
const *p = &a;
Step 3 : Remove everything before const
const *p = &a;
Step 4 : Remove assignment
const *p;
Step 5 : Now apply the rule. Anything after
const
keyword CAN NOT be changed
We see
*p
afterconst
Means,
*p
CAN NOT be changed again in next line
char a = 5;
const char *p = &a;
*p = 10; // --> This is invalid
Step 6 : Bonus point !
*p
andp
are different. Means you can changep
From Step 4, we derived that “const *p”
Means only
*p
is const and CAN NOT be changedBut remember
p
is entirely differentThere is nothing which says
p
is constantHence
p
can still be changedSee below example
char a = 5, b = 6;
const char *p = &a;
printf("*p is %d\n", *p); // prints 5
p = &b; // --> This is valid
printf("*p is %d\n", *p); // prints 6
Step 1 : Consider the statement
char *const p = &a;
Step 2 : Remove all keywords after
const
char *const p = &a;
Step 3 : Remove everything before const
const p = &a;
Step 4 : Remove assignment
const p;
Step 5 : Now apply the rule. Anything after
const
keyword CAN NOT be changed
We see
p
afterconst
Means,
p
CAN NOT be changed again in next line
char a = 5, b = 6;
char *const p = &a;
printf("*p is %d\n", *p); // prints 5
p = &b; // --> This is invalid
Step 6 : Bonus point !
*p
andp
are different. Means you can change*p
From Step 4, we derived that “const p”
Means only
p
is const and CAN NOT be changedBut remember
*p
is entirely differentThere is nothing which says
*p
is constantHence
*p
can still be changedSee below example
char a = 5, b = 6;
char *const p = &a;
printf("*p is %d\n", *p); // prints 5
*p = 100; // --> This is valid
printf("*p is %d\n", *p); // prints 100
There are two occurences of
const
keywordHence, let us apply the same rules two times
Step 1 : Consider the statement
const char *const p = &a;
Step 2 : Remove all keywords after first const
const *p = &a;
Step 3 : Remove everything before first const
const *p = &a;
Step 4 : Remove assignment
const *p;
Step 5 : Now apply the rule. Anything after const keyword CAN NOT be changed
*p CAN NOT be changed
Step 1 : Consider the statement
const char *const p = &a;
Step 2 : Remove all keywords after second const
const char *const p = &a;
Step 3 : Remove everything before second const
const p = &a;
Step 4 : Remove assignment
const p;
Step 5 : Now apply the rule. Anything after const keyword CAN NOT be changed
p CAN NOT be changed
Both p and *p CAN NOT be changed
char a = 5, b = 6;
const char *const p = &a;
*p = 100; // --> This is invalid
p = &b; // --> This is invalid
Statement |
Meaning |
---|---|
const char a = 5; |
|
char const a = 5; |
|
const char *p = &a; |
|
char const *p = &a; |
|
char *const p = &a; |
|
const char *const p = &a; |
|
Current Module
Previous Module
Next Module
Other Modules