C++ Pointers | Set 2
11. What is the meaning of the following declaration?
int (*p [5]) ();
a) p is pointer to function
b) p is array of pointer to function
c) p is pointer to such function which return type is the array
d) p is pointer to array of function
Answer: B
Explanation: In the above declaration the variable p is the array, not the pointer.
12. What is size of generic pointer in C++ (in 32-bit platform)?
a) 2
b) 4
c) 8
d) 0
Answer: B
Explanation: Size of any type of pointer is 4 bytes in 32-bit platforms.
13. What will be the output of the following C++ code?
#include <iostream>
using namespace std;
int main() {
int a[2][4] = {3, 6, 9, 12, 15, 18, 21, 24};
cout << *(a[1] + 2) << * (*(a + 1) + 2) << [1[a]];
return 0;
}
a) 15 18 21
b) 21 21 21
c) 24 24 24
d) Compile time error
Answer: B
Explanation: a[1][2] means 1 * (4)+2 = 6th element of an array starting from zero.
14. What will be the output of the following C++ code?
#include <iostream>
using namespace std;
int main() {
int i;
const char *arr[] = {"c", "c++", "java", "VBA"};
const char *(*ptr)[4] = &arr;
cout << ++(*ptr)[2];
return 0;
}
a) ava
b) java
c) c++
d) compile time error
Answer: A
Explanation: In this program we are moving the pointer from first position to second position and printing the remaining value.
15. What will be the output of the following C++ code?
#include <iostream>
using namespace std;
int main() {
int arr[] = {4, 5, 6, 7};
int *p = (arr + 1);
cout << *p;
return 0;
}
a) 4
b) 5
c) 6
d) 7
Answer: B
Explanation: In this program, we are making the pointer point to next value and printing it.
16. What will happen in the following C++ code snippet?
#include <iostream>
using namespace std;
int main() {
int arr[] = {4, 5, 6, 7};
int *p = (arr + 1);
cout << arr;
return 0;
}
a) 4
b) 5
c) address of arr
d) 7
Answer: C
Explanation: As we counted to print only arr, it will print the address of the array.
17. What will be the output of the following C++ code?
#include <iostream>
using namespace std;
int main() {
int numbers[5];
int *p;
p = numbers; *p = 10;
p++; *p = 20;
p = numbers[2]; *p = 30;
p = numbers + 3; *p = 40;
p = numbers; *(p + 4) = 50;
for (int n = 0; n < 5; n++){
cout << numbers[n] << ",";
}
return 0;
}
a) 10,20,30,40,50,
b) 1020304050
c) compile error
d) runtime error
Answer: A
Explanation: In this program, we are just assigning a value to the array and printing it and immediately dereferencing it.
18. What will be the output of the following C++ code?
#include <iostream>
using namespace std;
int main() {
int arr[] = {4, 5, 6, 7};
int *p = (arr + 1);
cout << *arr + 9;
return 0;
}
a) 12
b) 5
c) 13
d) error
Answer: C
Explanation: In this program, we are adding the value 9 to the initial value of the array, So it’s printing as 13.
19. The void pointer can point to which type of objects?
a) int
b) float
c) double
d) all of the mentioned
Answer: D
Explanation: Because it doesn’t know the type of object it is pointing to, So it can point to all objects.
20. When does the void pointer can be dereferenced?
a) when it doesn’t point to any value
b) when it cast to another type of object
c) using delete keyword
d) using shift keyword
Answer: B
Explanation: By casting the pointer to another data type, it can be dereferenced from the void pointer.