Open In App

Output of C++ programs | Set 47 (Pointers)

Improve
Improve
Like Article
Like
Save
Share
Report

Prerequisite : Pointers in C/C++

1. What will be the output of the following program?




#include <iostream>
using namespace std;
  
int main()
{
    int a = 32, *ptr = &a;
    char ch = 'A', &cho = ch;
  
    cho += a;
    *ptr += ch;
    cout << a << ", " << ch << endl;
    return 0;
}


Options:
a. 32, A
b. 32, a
c. 129, a
d. 129, A

Answer: c. 129, a

Explanation: The “ptr” variable is a pointer which holds the address of variable “a”. And “*ptr” returns the value of “a” variable. “cho” is a reference variable to “ch”. So any change made to “cho” will be reflected to “ch”. As such, when “cho” is increased by 32, it adds to the ASCII value of “A”(which is 65), and this results to 97 which is the ASCII value of “a”(from the alphabet). So this “a” gets stored in “ch”. As for when “*ptr” is incremented by “ch”, it gives value 97+32=129.

2. What will be the output of the following program?




#include <iostream>
using namespace std;
  
int main()
{
    const int i = 20;
    const int* const ptr = &i;
    (*ptr)++;
    int j = 15;
    ptr = &j;
    cout << i;
    return 0;
}


Options:
a. 20
b. 21
c. 15
d. Compile error

Answer: d. Compile error

Explanation:Here “ptr” has been defined as a constant pointer that holds address of a constant integer “i”. So, neither can the value of “ptr” be changed, nor can the value held by it can be changed. Thus the lines “(*ptr)++” and “ptr=&j” are invalid, as they are trying to modify the variable i’s content and the value of the pointer respectively. This gives an error.

3. What will be the output of the following program?




#include <iostream>
using namespace std;
int main()
{
    int num[5];
    int* p;
    p = num;
    *p = 10;
    p++;
    *p = 20;
    p = &num[2];
    *p = 30;
    p = num + 3;
    *p = 40;
    p = num;
    *(p + 4) = 50;
    for (int i = 0; i < 5; i++)
        cout << num[i] << ", ";
    return 0;
}


Options:
a. 10, 20, 30, 40, 50
b. 10, 20, 30, 40, 50,
c. compile error
d. runtime error

Answer: b. 10, 20, 30, 40, 50, 

Explanation: Its simple. The values are being assigned to the array, and de-referenced to print them.

4. What will be the output of the following program?




#include <iostream>
using namespace std;
int main()
{
    int arr[] = { 4, 5, 6, 7 };
    int* p = (arr + 1);
    cout << *arr + 10;
    return 0;
}


Options:
a. 12
b. 15
c. 14
d. error

Answer: c. 14

Explanation : ‘arr’ works as a pointer to the array. So ‘arr’ points to the first location in the array. Similarly ‘arr + 1’ points to the second location in the array, and so on. Therefore, *arr accesses the first value in the array, which is 4, and adds it to 10. This gives 14 as output.

5. What will be the output of the following program?




#include <iostream>
using namespace std;
int main()
{
    int a = 10, *pa, &ra;
    pa = &a;
    ra = a;
    cout << "a=" << ra;
    return 0;
}


Options:
a. 10
b. no output
c. compile error
d. runtime error

Answer : c. compile error

Explanation: Reference variables are different from pointers. Pointer can be initialized as well as assigned, but references can only be initialized. Here, ‘ra’ reference variable is being assigned the address of ‘a’ instead of initializing it when it is declared. This throws a compile error – ‘ra’ declared as reference but not initialized.



Last Updated : 15 Sep, 2017
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads