Output of C++ programs | Set 39 (Pointers) - GeeksforGeeks

26 Aug, 2017
Prerequisite: Pointers in C/C++
QUE.1 What would be printed from the following C++ program?
#include <iostream>#include <stdlib.h>using namespace std;int main(){    float x = 5.999;    float* y, *z;    y = &x;    z = y;    cout << x << ", " << *(&x) << ", " << *y << ", " << *z << "\n";    return 0;}
a) 5.999, 5.999, 5.999, 5.999b) 5.999, 5.9, 5.000, 5.900c) Address of the elementsd) compilation error
 Answer: a
Explanation: The reason for this is x gives the value stored in the variable x. *(&x) gives the data value stored in the address &x i.e., the data value of x. Since y points to x (..y=&x), *y gives the value of x. And because z has the same address as that of y, *z also gives the value of x i.e., 5.999
QUE.2 What would be printed from the following C++ program?
#include <iostream>using namespace std;  int main(){    int track[] = { 10, 20, 30, 40 }, *striker;      striker = track;    track[1] += 30;    cout << "Striker>" << *striker << " ";    *striker -= 10;    striker++;    cout << "Next@" << *striker << " ";    striker += 2;    cout << "Last@" << *striker << " ";    cout << "Reset To" << track[0] << " ";      return 0;}
a) 10, 20, 30, 40b) Striker>10 Next@50 Last@40 Reset To0c) Striker>10 Next@40 Last@50 Reset To0d) Striker> Next@ Last@ Reset To
 Answer: b
Explanation: The array track contains 4 elements {10, 20, 30, 40} and the pointer striker holds the base address of the array track i.e, address of track[0].1) *striker holds the data value of track[0] i.e, 10. Decrement in *striker by 10 makes the track[0]=0.2) Incrementing pointer striker gives the next location of track i.e., 1. Now *striker gives the data value of track[1].3) Again by incrementing by 2, striker reaches to the 4 address of the array track i.e, track[4].4) At last print the value at track[0], which is 0 (see step 1)
QUE.3 What would be printed from the following C++ 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;}
OPTIONa) 97, Ab) 128, Ac) 97, ad) 129, a
Answer: d
Explanation: ptr is a pointer which holds the address of a while *ptr returns the data value of a. Cho is a reference variable which hold the reference of ch. Now, incrementing the value of cho by 32 (ASCII value), reflect to cho and ch makes it equal to “a” (alphabet). In last step, data value of *ptr incremented by ch i. e., “a” gives a = 129.
QUE.4 What is the output of the following C++ program?
#include <iostream>using namespace std;  int main(){    const int i = 20;    const int* const ptr = &i;    (*ptr)++;    int j = 15;    ptr = &j;    return 0;}
a) Address of the elementsb) run time errorc) Compilation errord) none of this
Answer:c
Explanation: ptr is a constant pointer to constant integer, which means neither the pointer nor its contents will be modified, thus lines 6 and 8 are invalid as they are trying to modify the contents and pointer respectively.
QUE.5 What is the output of the following C++ program?
#include <iostream>using namespace std;#include <stdio.h>int main(){    char* str[] = { "AAAAA", "BBBBB", "CCCCC", "DDDDD" };    char** sptr[] = { str + 3, str + 2, str + 1, str };    char*** pp;      pp = sptr;    ++pp;    printf("%s", **++pp + 2);    return 0;}
a) BBBBBb) CCCCCc) BBBd) Error
Answer: c
Explanation: *str is a array pointer of string, **sptr is array pointer(double pointer) that is pointing to str strings in reverse order. ***pp also a pointer that is pointing sptr base address. ++pp will point to 1st index of sptr that contain str+2 (“CCCCC”). in printf(“%s”, **++pp+2); ++pp will point to str+1, and **++pp, value stored @ str+1 (“BBBBB). and (**++pp)+2 will point the 2nd index of “BBBBB”, hence BBB will be printed.
This article is contributed by Ajay Puri(ajay0007). If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
CPP-Output
Program Output
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Different ways to copy a string in C/C++
Output of Python Program | Set 1
Runtime Errors
Output of Java Program | Set 3
Output of Java Program | Set 2
unsigned specifier (%u) in C with Examples
Output of C++ Program | Set 1
Output of C Programs | Set 3
Output of C++ programs | Set 50
Output of Java program | Set 5