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 2 of 3.

Shyam said:   1 decade ago
Can anyone tell me how can we copy whole string by just one equal to sign. I mean we suppose to run a loop to copy a array from one to another but hear they just put one equal to and it is done how ?

Bhavani said:   1 decade ago
How to change the value of constant variable s?

Please explain.

Jayp said:   1 decade ago
s is a pointer and you are not changing the value of some constant, so here pointer s is just doing what a pointer requires to do that is pointing to str and accessing the data stored in str.

So you can change cont pointer points to some other address but not directly the value.

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

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)

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

Rahul Kant said:   1 decade 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;
}

Vinay Dixit said:   1 decade ago
Code should be like this:

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

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

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

Somebody please explain?
(1)


Post your comments here:

Your comments will be displayed after verification.