C Programming - Const - Discussion

Discussion Forum : Const - Find Output of Program (Q.No. 6)
6.
What will be the output of the program?
#include<stdio.h>

int main()
{
    const char *s = "";
    char str[] = "Hello";
    s = str;
    while(*s)
        printf("%c", *s++);

    return 0;
}
Error
H
Hello
Hel
Answer: Option
Explanation:

Step 1: const char *s = ""; The constant variable s is declared as an pointer to an array of characters type and initialized with an empty string.

Step 2: char str[] = "Hello"; The variable str is declared as an array of charactrers type and initialized with a string "Hello".

Step 3: s = str; The value of the variable str is assigned to the variable s. Therefore str contains the text "Hello".

Step 4: while(*s){ printf("%c", *s++); } Here the while loop got executed untill the value of the variable s is available and it prints the each character of the variable s.

Hence the output of the program is "Hello".

Discussion:
23 comments Page 1 of 3.

Deepthi said:   6 years ago
Here s is a pointer to a constant. That means we can change the address but we can't change the value. If it's constant to a pointer then we can change the value but address can't be changed.

Anoop said:   9 years ago
No, because postfix ++ have high precedence than * so, its equivalent to *(s++).

Rajat said:   9 years ago
*s++?

Now *s is 'H'.

If *s++ is done, won't that do 'H'+1?

Jayesh monani said:   9 years ago
We can't directly assign s=str, it should give error, for that strcpy(s, str) should be used.

Somebody please explain?

AVINASH said:   9 years ago
While loop take 1 or 0 as input. How this program then correct?

Vinay Dixit said:   9 years ago
Code should be like this:

int main()
{
const char *s = "";
char str[] = "Hello";
s = str;
while(*s)
printf("%c", s++);
return 0;
}

Rahul Kant said:   9 years ago
In my opinion code to print "Hello" should be like this:

int main()
{
const char *s = "";
char str[] = "Hello";
s = str;
while(*s)
printf("%c", int main()
{
const char *s = "";
char str[] = "Hello";
s = str;
while(*s)
printf("%c", *s++);

return 0;
}++);

return 0;
}

Chakri said:   9 years ago
s is a constant pointer and it cannot be re assigned to another memory location.

Anon said:   1 decade ago
Guys const char * is a pointer to a constant and not constant pointer. You can never alter the value it is pointing at but you can change the address it is holding.
(1)

Jayp said:   1 decade ago
A const variable can be indirectly modified by a pointer.


Post your comments here:

Your comments will be displayed after verification.