Here is a listing of C++ aptitude questions on “Pointers” along with answers, explanations and/or solutions:
1. What does the following statement mean?
a) pointer to a pointer
b) pointer to an array of chars
c) pointer to function taking a char* argument and returns an int
d) function taking a char* argument and returning a pointer to int
Answer: c
Clarification: The (*fn) represents a pointer to a function and char* as arguments and returning int from the function. So according to that, the above syntax represents a pointer to a function taking a char* as an argument and returning int.
2. The operator used for dereferencing or indirection is ____
a) *
b) &
c) ->
d) –>>
Answer: a
Clarification: * is used as dereferencing operator, used to read value stored at the pointed address.
3. Choose the right option.
string* x, y;
a) x is a pointer to a string, y is a string
b) y is a pointer to a string, x is a string
c) both x and y are pointers to string types
d) y is a pointer to a string
Answer: a
Clarification: * is to be grouped with the variables, not the data types.
4. Which one of the following is not a possible state for a pointer.
a) hold the address of the specific object
b) point one past the end of an object
c) zero
d) point to a type
Answer: d
Clarification: A pointer can be in only 3 states a, b and c.
5. Which of the following is illegal?
a) int *ip;
b) string s, *sp = 0;
c) int i; double* dp = &i;
d) int *pi = 0;
Answer: c
Clarification: dp is initialized int value of i.
6. What will happen in the following C++ code snippet?
-
int a = 100, b = 200;
-
int *p = &a, *q = &b;
-
p = q;
a) b is assigned to a
b) p now points to b
c) a is assigned to b
d) q now points to a
Answer: b
Clarification: Assigning to reference changes the object to which the reference is bound.
7. What will be the output of the following C++ code?
-
#include
-
using namespace std;
-
int main()
-
{
-
int a = 5, b = 10, c = 15;
-
int *arr[ ] = {&a, &b, &c};
-
cout << arr[1];
-
return 0;
-
}
a) 5
b) 10
c) 15
d) it will return some random number
Answer: d
Clarification: Array element cannot be address of auto variable. It can be address of static or extern variables.
8. The correct statement for a function that takes pointer to a float, a pointer to a pointer to a char and returns a pointer to a pointer to a integer is ____________
a) int **fun(float**, char**)
b) int *fun(float*, char*)
c) int **fun(float*, char**)
d) int ***fun(*float, **char)
Answer: c
Clarification: Function that takes pointer to a float, a pointer to a pointer to a char and returns a pointer to a pointer to a integer is int **fun(float*, char**).
9. What will be the output of the following C++ code?
-
#include
-
using namespace std;
-
int main()
-
{
-
char arr[20];
-
int i;
-
for(i = 0; i < 10; i++)
-
*(arr + i) = 65 + i;
-
*(arr + i) = ' ';
-
cout << arr;
-
return(0);
-
}
a) ABCDEFGHIJ
b) AAAAAAAAAA
c) JJJJJJJJ
d) AAAAAAJJJJ
Answer: a
Clarification: Each time we are assigning 65 + i. In first iteration i = 0 and 65 is assigned. So it will print from A to J.
$ g++ point1.cpp
$ a.out
ABCDEFGHIJ
10. What will be the output of the following C++ code?
-
#include
-
using namespace std;
-
int main()
-
{
-
char *ptr;
-
char Str[] = "abcdefg";
-
ptr = Str;
-
ptr += 5;
-
cout << ptr;
-
return 0;
-
}
a) fg
b) cdef
c) defg
d) abcd
Answer: a
Clarification: Pointer ptr points to string ‘fg’. So it prints fg.
Output:
$ g++ point.cpp $ a.out fg