C++ Pointers | Set 1
1. What does the following statement mean?
int (*fp) (char*);
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
Explanation: 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
Explanation: * 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
Explanation: * 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
Explanation: 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
Explanation: 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
Explanation: Assigning to reference changes the object to which the reference is bound.
7. What will be the output of the following C++ code?
#include <iostream>
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
Explanation: 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
Explanation: 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 <iostream>
using namespace std;
int main() {
char arr[20];
int i;
for (i = 0; i < 10; i++)
*(arr + i) = 65 + i;
*(arr + i) = '\0';
cout << arr;
return 0;
}
a) ABCDEFGHIJ
b) AAAAAAAAAA
c) JJJJJJJJ
d) AAAAAAJJJJ
Answer: A
Explanation: Each time we are assigning 65 + i. In first iteration i = 0 and 65 is assigned. So it will print from A to J.
10. What will be the output of the following C++ code?
#include <iostream>
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
Explanation: Pointer ptr points to string ‘fg’. So it prints fg.