C Programming - Declarations and Initializations - Discussion
Discussion Forum : Declarations and Initializations - Find Output of Program (Q.No. 4)
4.
What is the output of the program in Turbo C (in DOS 16-bit OS)?
#include<stdio.h>
int main()
{
char *s1;
char far *s2;
char huge *s3;
printf("%d, %d, %d\n", sizeof(s1), sizeof(s2), sizeof(s3));
return 0;
}
Answer: Option
Explanation:
Any pointer size is 2 bytes. (only 16-bit offset)
So, char *s1 = 2 bytes.
So, char far *s2; = 4 bytes.
So, char huge *s3; = 4 bytes.
A far, huge pointer has two parts: a 16-bit segment value and a 16-bit offset value.
Since C is a compiler dependent language, it may give different output in other platforms. The above program works fine in Windows (TurboC), but error in Linux (GCC Compiler).
Discussion:
55 comments Page 5 of 6.
Jeyanthi said:
1 decade ago
I don't understand this.
Kamesh said:
1 decade ago
Can any body tell me what does mean by
char far *s2;
char huge *s3;
char far *s2;
char huge *s3;
Ranjith said:
2 decades ago
I don't know what is far and huge. Can you explain?
Lathaa said:
1 decade ago
A Null pointer is one which does not refer to any thing.
Far pointer refers to an address which not in the same segment where pointer is defined.
Near pointer refers to an address in the same segment where the pointer is defined.
Far pointer refers to an address which not in the same segment where pointer is defined.
Near pointer refers to an address in the same segment where the pointer is defined.
Poornima said:
1 decade ago
Could you please explain the differences between the exit(0); and exit(1);and also the difference between the return(0); and return(1);.
Prashant said:
1 decade ago
@Sundar
We are talking about sizeof(char) not a sizeof(int)....!!!!
How come it can be 4 rather than becoming 1 or 2...?
We are talking about sizeof(char) not a sizeof(int)....!!!!
How come it can be 4 rather than becoming 1 or 2...?
Saraswathi said:
1 decade ago
Then what is huge pointer? is it same as far pointer.
Deepak said:
1 decade ago
@Saraswathi
Huge pointers are normalized to have the highest possible segment for a given address, so size would be same as far pointer i.e. 4 byte (16 bit segment value +16 bit offset value)
Difference between far and huge pointer is of the highest possible segment.
Huge pointers are normalized to have the highest possible segment for a given address, so size would be same as far pointer i.e. 4 byte (16 bit segment value +16 bit offset value)
Difference between far and huge pointer is of the highest possible segment.
SALVATOR said:
1 decade ago
char far *s2;
char huge *s3;
WHAT IS THE ROLE OF *S2 AND *S3 ?
char huge *s3;
WHAT IS THE ROLE OF *S2 AND *S3 ?
Sam said:
1 decade ago
What is DOS 16 bit OS ? Where we are using this ? If some other versions present what are they ?
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers