What happens if you try to compile and run this program?
What happens if you try to compile and run this program?
#include <stdio.h>
int *f();
int main (int argc, char *argv[]) {
int *p;
p = f();
printf("%d",*p);
return 0;
}
int *f() {
static v = 1;
return &v;
}
Choose the right answer:
A . The program outputs 1
B . Compilation fails
C . The program outputs 3
D . The program outputs 2
E . The program outputs 0
Answer: A
Explanation:
The program outputs 1 because the static variable v is initialized to 1 inside the f function, and it is visible to the main function. The f function returns the address of v, which is a pointer to an int. The main function dereferences the pointer and assigns it to p, which is another pointer to an int. Then, the main function prints the value of *p, which is the same as dereferencing p again. Therefore, the output of the program is:
f() = &v p = f() printf(ā%dā,*p) = &v = 1
The other options are incorrect because they either do not match the output of the program or do not use the correct concept of static variables.
Latest CLA-11-03 Dumps Valid Version with 40 Q&As
Latest And Valid Q&A | Instant Download | Once Fail, Full Refund