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.