Complicated Declarations Questions

Practice Complicated Declarations MCQs with answers and explanations. Page 1 of 2.

Category
C Programming
Topic
Complicated Declarations
Page
1 / 2
Mode
Practice

Questions

Open any question to view the answer and explanation.

What does the declaration char *arr[10]; signify in C? Explain the type and structure represented by arr in this declaration.
Open
View answer
C declarations and pointers: interpret the following declaration int (*pf)(); What does it signify?
Open
View answer
C declarations: write a declaration for "An array of three pointers to chars" Choose the correct C syntax that matches the English statement.
Open
View answer
C declarations: interpret the following declaration int *f(); What exactly does it mean?
Open
View answer
C declarations: write a declaration for "A pointer to a function which receives an int pointer and returns a float pointer"
Open
View answer
C declarations: interpret the following declaration char **argv;
Open
View answer
C declarations: write a declaration for "A pointer to a function which receives nothing and returns nothing"
Open
View answer
C declarations: interpret the following declaration char *scr;
Open
View answer
C declarations: interpret the following declaration void *cmp();
Open
View answer
C declarations: write a declaration for "A pointer to an array of three chars"
Open
View answer
C declarations: interpret the following declaration void (*cmp)();
Open
View answer
In C/C++, how should we interpret the declaration: int ptr[30]; Explain precisely what ptr represents in terms of arrays and pointers.
Open
View answer
Turbo C memory models — sizes of near, far, and huge pointers (pointer-to-pointer declarations). #include<stdio.h> 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?
Open
View answer
In Turbo C (16-bit DOS memory model), what does this program print for the sizes of the declared pointer variables? #include<stdio.h> 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; }
Open
View answer
Under Turbo C (16-bit DOS), evaluate the sizes printed by this program with mixed near/far/huge on multi-level pointers: #include<stdio.h> 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; }
Open
View answer
In Turbo C (DOS), determine the sizes printed by this program mixing dereferences in sizeof: #include<stdio.h> 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; }
Open
View answer
Turbo C (DOS) pointer sizes: predict the output for these declarations and sizeof calls: #include<stdio.h> 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; }
Open
View answer
Turbo C (DOS): evaluate sizeof results that mix pointer levels and dereferences: #include<stdio.h> 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; }
Open
View answer
C typedefs and shadowing in Turbo C: what does this program print? #include<stdio.h> 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); }
Open
View answer
Unsigned wraparound in Turbo C (DOS): what does this program print? #include<stdio.h> 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; }
Open
View answer

Practice smarter

Solve a few questions daily and revisit weak topics regularly to improve accuracy.