What will be the output of following program code?
#include <stdio.h>
int main(void)
{
char p;
char buf[10] = {1, 2, 3, 4, 5, 6, 9, 8};
p = (buf + 1)[5];
printf("%d", p);
return 0;
}
#include <stdio.h>
int main(void)
{
char p;
char buf[10] = {1, 2, 3, 4, 5, 6, 9, 8};
p = (buf + 1)[5];
printf("%d", p);
return 0;
}
A. 5
B. 6
C. 9
D. Error
E. None of the above
Answer: Option C
Solution(By Examveda Team)
x[i] is equivalent to *(x + i),
so (buf + 1)[5] is *(buf + 1 + 5), i.e. buf[6].
Join The Discussion
Comments ( 10 )
Related Questions on Arrays and Strings
data type of p is character but while printing 'p' given is %d so how it will execute
those who are confused with buf.
It is just a variable name.
char p,
char buf{1,2,3,4,5,6,7,9,8}
p=buf[6]
printf(%d,p)
what is output of above program...??
Explain me in brief about buf concept
What is but?
Read the explanation.
How are you do these process
Because in the program you write (buf+1)[5]
And in your suggestion you say that *(but+1)[5]
Meance the meaning is change because of astrik(*)
what are but?
Meaning
How buf[6] is 9.....??
What are the buf?