Q:

C++ Static Variables and Functions | Find output programs | Set 2

belongs to collection: C++ find output programs

0

This section contains the C++ find output programs with their explanations on C++ Static Variables and Functions (set 2).

Program 1:

#include <iostream>
using namespace std;

int* fun()
{
    static int a;
    a++;

    return &a;
}

int main()
{
    int** p;

    p = &(fun());

    fun();
    fun();
    fun();

    cout << "function called " << **p << " times";

    return 0;
}

Program 2:

#include <iostream>
using namespace std;

int* fun()
{
    static int a;
    a++;

    return &a;
}
static int a = 10;

int main()
{
    int* p;

    p = fun();

    fun();
    fun();
    fun();

    cout << "function called " << *p << " times";

    return 0;
}

Program 3:

#include <iostream>
using namespace std;

class Sample {
    static int A;

public:
    Sample()
    {
        A++;
    }
    void display()
    {
        cout << A << endl;
    }
};

int main()
{
    Sample S;
    S.display();
    return 0;
}

All Answers

need an explanation for this answer? contact us directly to get an explanation for this answer

Answer Program 1:

Output:

main.cpp: In function ‘int main()’:
main.cpp:16:16: error: lvalue required as unary ‘&’ operand
     p = &(fun());
                ^

Explanation:

This code will generate an error because of the below statement,

p = &(fun());

In the above statement p is a chain pointer, but we are trying to get the address of address that does not exist.

Answer Program 2:

Output:

function called 4 times

Explanation:

Here, we created a function that contains a static variable a and function returns an integer pointer.

And one more global static variable a is created and initialize with 10, here global and local both a are different variables.

Now, coming to the main() function, here we created an integer pointer p that is storing the address returned by function fun(), after every function call, the static variable gets increased, because the default value of the static variable is 0 and then its lifetime is in the whole program.

 

So, finally it will print "function called 4 times" on the console screen. After calling function fun() 4 times.

Answer Program 3:

Output:

/tmp/ccjOw4Qx.o: In function `Sample::Sample()':
main.cpp:(.text._ZN6SampleC2Ev[_ZN6SampleC5Ev]+0xa): undefined reference to `Sample::A'
main.cpp:(.text._ZN6SampleC2Ev[_ZN6SampleC5Ev]+0x13): undefined reference to `Sample::A'
/tmp/ccjOw4Qx.o: In function `Sample::display()':
main.cpp:(.text._ZN6Sample7displayEv[_ZN6Sample7displayEv]+0xe): undefined reference to `Sample::A'
collect2: error: ld returned 1 exit status

Explanation:

This code will generate a syntax error (Undefined reference to 'Sample::A') because we declared a static variable, but we did not define it properly.

The below program will demonstrate how to define static members of the class?

#include <iostream>
using namespace std;

class Sample {
    static int A;

public:
    Sample()
    {
        A++;
    }
    void display()
    {
        cout << A << endl;
    }
};
int Sample::A = 0;

int main()
{
    Sample S;
    S.display();
    return 0;
}

Output:

 

1

need an explanation for this answer? contact us directly to get an explanation for this answer

total answers (1)

C++ find output programs

This question belongs to these collections

Similar questions


need a help?


find thousands of online teachers now
C++ Static Variables and Functions | Find output p... >>
<< C++ Static Variables and Functions | Find output p...