C Programming - Pointers - Discussion
Discussion Forum : Pointers - Find Output of Program (Q.No. 4)
4.
What will be the output of the program ?
#include<stdio.h>
int main()
{
char str[20] = "Hello";
char *const p=str;
*p='M';
printf("%s\n", str);
return 0;
}
Discussion:
69 comments Page 5 of 7.
Pankaj pandey said:
1 decade ago
But how it is possible because string constraint never change, if we want to change the base address that is possible.
Swetha sathish k said:
1 decade ago
Here pointer is constant, but not the string.
Swetha sathish k said:
1 decade ago
char *const p means p pointer is a constant. but the array is not.
Chethan said:
1 decade ago
@Himanshu.
The string has got changed because we are accessing it through pointer that is we are directly writing to the address of string.
The string has got changed because we are accessing it through pointer that is we are directly writing to the address of string.
Red said:
1 decade ago
Why is 'M' given? shouldn't it be "M"?
Sushmitha said:
1 decade ago
@Red.
The string str is assigned with str[0]='H', str[1]='e' and so on.
The other way of initialising that string would be
char str[]={'h','e','l','l','o','\0'};
NOTE: The name of the array itself holds the base address of the string.
So when p=str,the base address of the string str[0] is assigned to p.
*p='M' implies that the value at p which is str[0]is changed to 'M', which was previously 'H'.
Hope you got it.
The string str is assigned with str[0]='H', str[1]='e' and so on.
The other way of initialising that string would be
char str[]={'h','e','l','l','o','\0'};
NOTE: The name of the array itself holds the base address of the string.
So when p=str,the base address of the string str[0] is assigned to p.
*p='M' implies that the value at p which is str[0]is changed to 'M', which was previously 'H'.
Hope you got it.
(1)
Anonymous said:
1 decade ago
Here, str is copied to p and the value of p was changed. So, data in p is of str but not str=p. then if value in p is changed., How the value in str would change?
Murthy said:
1 decade ago
#include<stdio.h>
int main()
{
char str[20] = "Hello";//here given char str is hello
char *const p=str; //char * const p="hello" i.e str
char const *p="hello" so
*p='M'; //*p=M so it is changed H to M
printf("%s\n", str); // its prints Mello
return 0;
}
NOTE:
const char *p="hello";
char const *p="hello";
char * const p="hello";
const char * const u="hello";
int main()
{
char str[20] = "Hello";//here given char str is hello
char *const p=str; //char * const p="hello" i.e str
char const *p="hello" so
*p='M'; //*p=M so it is changed H to M
printf("%s\n", str); // its prints Mello
return 0;
}
NOTE:
const char *p="hello";
char const *p="hello";
char * const p="hello";
const char * const u="hello";
Nithya said:
1 decade ago
How to replace the second letter of the word "hello" by m ?
Venky said:
1 decade ago
@Nithya.
Str[1] = 'M'.
Str[1] = 'M'.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers