main()
{
int ptr[] = {1,2,23,6,5,6};
printf("%d",&ptr[3]-&ptr[0]);
}
Answer Posted / shivam jindal
That should print a 3. It's really the same as
printf("%d", 3-0);
...since:
ptr[3] is the 4th element in the ptr[] array.
&ptr[3] is a pointer to the 4th element in the ptr[] array.
&ptr[0] is similarly a pointer to the first element in ptr[].
&ptr[3] - &ptr[0] is a subtraction of two pointers. That's only defined (in standard C/C++) for pointers to elements in the same array, like in this case, and it's defined as the difference between the index values. That's where the 3-0 comes from.
The result of a pointer difference is an int. &ptr[0] - &ptr[3] results in 0-3 which is -3.
| Is This Answer Correct ? | 5 Yes | 3 No |
Post New Answer View All Answers
State the difference between realloc and free.
What is external variable in c?
int i=10; printf("%d %d %d", i, i=20, i);
Difference between MAC vs. IP Addressing
How can I get the current date or time of day in a c program?
What is the purpose of & in scanf?
Why does the call char scanf work?
How can I find the modification date and time of a file?
When should the register modifier be used? Does it really help?
When is a void pointer used?
How do you write a program which produces its own source code as output?
Explain how can type-insensitive macros be created?
How do you sort filenames in a directory?
Why void is used in c?
What is && in c programming?