Curioustab
Aptitude
General Knowledge
Verbal Reasoning
Computer Science
Interview
Take Free Test
Aptitude
General Knowledge
Verbal Reasoning
Computer Science
Interview
Take Free Test
Complicated Declarations Questions
What does the declaration char *arr[10]; signify in C? Explain the type and structure represented by arr in this declaration.
C declarations and pointers: interpret the following declaration int (*pf)(); What does it signify?
C declarations: write a declaration for "An array of three pointers to chars" Choose the correct C syntax that matches the English statement.
C declarations: interpret the following declaration int *f(); What exactly does it mean?
C declarations: write a declaration for "A pointer to a function which receives an int pointer and returns a float pointer"
C declarations: interpret the following declaration char **argv;
C declarations: write a declaration for "A pointer to a function which receives nothing and returns nothing"
C declarations: interpret the following declaration char *scr;
C declarations: interpret the following declaration void *cmp();
C declarations: write a declaration for "A pointer to an array of three chars"
C declarations: interpret the following declaration void (*cmp)();
In C/C++, how should we interpret the declaration: int ptr[30]; Explain precisely what ptr represents in terms of arrays and pointers.
Turbo C memory models — sizes of near, far, and huge pointers (pointer-to-pointer declarations). #include
int main() { char near near ptr1; / near pointer to near char => near pointer size */ char near far ptr2; / far pointer to near char => far pointer size */ char near huge ptr3; / huge pointer to near char => huge pointer size / printf("%d, %d, %d ", (int) sizeof(ptr1), (int) sizeof(ptr2), (int) sizeof(ptr3)); return 0; } What is the output on Turbo C?
In Turbo C (16-bit DOS memory model), what does this program print for the sizes of the declared pointer variables? #include
int main() { char huge *near *ptr1; // ptr1: near pointer to (huge char *) char huge *far *ptr2; // ptr2: far pointer to (huge char *) char huge *huge *ptr3; // ptr3: huge pointer to (huge char *) printf("%d, %d, %d ", sizeof(ptr1), sizeof(ptr2), sizeof(ptr3)); return 0; }
Under Turbo C (16-bit DOS), evaluate the sizes printed by this program with mixed near/far/huge on multi-level pointers: #include
int main() { char huge *near *far *ptr1; // ptr1: far pointer to (near pointer to huge char) char near *far *huge *ptr2; // ptr2: huge pointer to (far pointer to near char) char far *huge *near *ptr3; // ptr3: near pointer to (huge pointer to far char) printf("%d, %d, %d ", sizeof(ptr1), sizeof(ptr2), sizeof(ptr3)); return 0; }
In Turbo C (DOS), determine the sizes printed by this program mixing dereferences in sizeof: #include
int main() { char huge *near *far *ptr1; char near *far *huge *ptr2; char far *huge *near *ptr3; printf("%d, %d, %d ", sizeof(ptr1), sizeof(**ptr2), sizeof(ptr3)); return 0; }
Turbo C (DOS) pointer sizes: predict the output for these declarations and sizeof calls: #include
int main() { char far *near *ptr1; // near pointer char far *far *ptr2; // far pointer char far *huge *ptr3; // huge pointer printf("%d, %d, %d ", sizeof(ptr1), sizeof(ptr2), sizeof(ptr3)); return 0; }
Turbo C (DOS): evaluate sizeof results that mix pointer levels and dereferences: #include
int main() { char huge *near *far *ptr1; char near *far *huge *ptr2; char far *huge *near *ptr3; printf("%d, %d, %d ", sizeof(ptr1), sizeof(*ptr2), sizeof(*ptr3)); return 0; }
C typedefs and shadowing in Turbo C: what does this program print? #include
typedef void v; typedef int i; int main() { v fun(i, i); fun(2, 3); return 0; } v fun(i a, i b) { i s = 2; // s is int float i; // here, i is a variable of type float (shadows typedef name) printf("%d,", sizeof(i)); printf(" %d", abs); }
Unsigned wraparound in Turbo C (DOS): what does this program print? #include
typedef unsigned long int uli; typedef uli u; int main() { uli a; u b = (u)-1; a = (uli)-1; printf("%lu, %lu", a, b); return 0; }
1
2