Pointer - Study Mode
[#176] What will be the output of the following C code? #include <stdio.h>
int sub(int a, int b, int c)
{
return a - b - c
}
void main()
{
int (*function_pointer)(int, int, int)
function_pointer = ⊂
printf("The difference of three numbers is:%d",
(*function_pointer)(2, 3, 4))
}
Correct Answer
(C) The difference of three numbers is:-5
[#177] Find the output of the following program. void main()
{
printf("%d, %d", sizeof(int *), sizeof(int **))
}
Correct Answer
(C) 2, 2
Explanation
Solution: Every pointer regardless of its type whereas single pointer or pointer to pointer, needs only 2 bytes. Size of pointer and int is 2 bytes in Turbo C compiler on windows 32 bit machine . So size of pointer is compiler specific. But generally most of the compilers are implemented to support 4 byte pointer variable in 32 bit and 8 byte pointer variable in 64 bit machine.
[#178] Find the output of the following program. void main()
{
int i=10
/* assume address of i is 0x1234ABCD */
int *ip=&i
int **ipp=&&i
printf("%x,%x,%x", &i, ip, *ipp)
}
Correct Answer
(D) Syntax error
Explanation
Solution: && is logical AND operator and this operator requires two operands.
[#179] Which of the following statements are true after execution of the program. void main()
{
int a[10], i, *p
a[0] = 1
a[1] = 2
p = a
(*p)++
}
Correct Answer
(B) a[0] = 2
Explanation
Solution: After the execution of the program, the value of the first element of the array 'a' will be modified. Let's break down the code step by step: a[0] = 1
: Sets the first element of the array 'a' to 1. a[1] = 2
: Sets the second element of the array 'a' to 2. p = a
: Assigns the address of the first element of the array 'a' to the pointer 'p'. (*p)++
: Increments the value at the memory location pointed to by 'p'. Since 'p' points to the first element of 'a', it increments the value of 'a[0]' . After the execution of the program, the value of a[0] will be 2. Therefore, the correct statement is Option B: a[0] = 2 .
[#180] What would be the output for the following Turbo C code? #include<stdio.h>
void main()
{
int a[]={ 1, 2, 3, 4, 5 }, *p
p=a
++*p
printf("%d ", *p)
p += 2
printf("%d", *p)
}
Correct Answer
(D) 2 3