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;
}
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?
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?
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;
}
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;
}
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:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers