What is the purpose of the const keyword when used with a pointer?
Answer: C
const int *ptr makes the data constant (const int * ptr). int * const ptr makes the pointer constant. The position of const matters.
Q.82Medium
What is the return type of malloc() function?
Answer: C
malloc() returns a void pointer (void*), which can be cast to any data type pointer as needed by the programmer.
Q.83Medium
In the expression: int arr[10]; what is arr[5]?
Answer: C
arr[5] accesses the element at index 5, which is at memory address (arr + 5). Array name arr acts as a pointer to the first element.
Q.84Medium
What is the output of: int a = 10, b = 20; int *p = &a, *q = &b; printf("%d", *p + *q);?
Answer: C
*p dereferences to a (10) and *q dereferences to b (20). Adding them: 10 + 20 = 30. Pointer arithmetic is used correctly here.
Q.85Medium
What is the output of: int x = 5; int y = ++x; ?
Answer: B
The pre-increment operator ++x increments x first (from 5 to 6), then assigns the new value to y. So x = 6 and y = 6.
Advertisement
Q.86Medium
What is the purpose of the free() function in C?
Answer: B
The free() function deallocates (releases) memory that was previously allocated using malloc(), calloc(), or realloc().
Q.87Medium
Which of the following correctly defines a structure in C?
Answer: C
The correct syntax uses the 'struct' keyword followed by the structure name and then the member declarations enclosed in braces.
Q.88Medium
What will be the value of x after executing: int x = 10; x += 5; x *= 2; ?
Answer: B
Step 1: x = 10. Step 2: x += 5 means x = x + 5 = 15. Step 3: x *= 2 means x = x * 2 = 15 * 2 = 30.
Q.89Medium
Which loop construct will execute at least once even if the condition is false?
Answer: C
The do-while loop executes the body first and then checks the condition, ensuring at least one execution. while and for loops check the condition first.
Q.90Medium
How is a two-dimensional array typically stored in memory in C?
Answer: C
C uses row-major order to store 2D arrays in memory. The elements are stored row by row sequentially in memory.
Q.91Medium
What is the output of the following code?
int x = 5;
int y = ++x;
printf("%d %d", x, y);
Answer: B
++x is pre-increment, which increments x before assignment. So x becomes 6, then y is assigned 6. Both x and y are 6.
Q.92Medium
What will be the output of the following code?
int *ptr;
int arr[3] = {10, 20, 30};
ptr = arr;
printf("%d", *(ptr + 1));
Answer: B
ptr points to arr[0] (value 10). ptr + 1 points to arr[1] (value 20). *(ptr + 1) dereferences this pointer, giving 20.
Q.93Medium
What is the primary difference between malloc() and calloc() functions in C?
Answer: B
Both malloc() and calloc() allocate dynamic memory. The key difference is that malloc() allocates uninitialized memory (contains garbage values), while calloc() allocates memory and initializes all bytes to zero. calloc() also takes two arguments (number of elements and size of each element), while malloc() takes one (total bytes needed).
Q.94Medium
If arr[5] = {1, 2, 3, 4, 5}, what will be the value of *(arr + 3)?
Answer: B
In array notation, arr is a pointer to the first element. *(arr + 3) dereferences the pointer that points to the 4th element (index 3). Since array indexing is 0-based: arr[0]=1, arr[1]=2, arr[2]=3, arr[3]=4. Therefore, *(arr + 3) = 4.
Q.95Medium
Consider a structure: struct Point { int x; int y; }; If p is a pointer to this structure and we want to access member x, which notation is INCORRECT?
Answer: C
When p is a pointer to a structure, we cannot use p.x (dot notation) directly. The correct ways are: p->x (arrow operator) or (*p).x (dereference then dot operator). The notation p.x would be used only if p were a structure variable, not a pointer. Therefore, p.x is incorrect when p is a pointer.