I found this question on an online exam. This is the code:
#include <stdio.h>
int main(void) {
int demo();
demo();
(*demo)();
return 0;
}
int demo(){
printf("Morning");
}
I saw the answer after the test. This is the answer:
MorningMorning
I read the explanation, but can't understand why this is the answer.
I mean, shouldn't the line int demo();
cause any "problem"?
Any explanation is helpful. Thanks.
It is not a problem because that int demo();
is not a function definition, it is just an external declaration, saying (declaring) that a function of such name exists.
In C you cannot define a nested function:
int main(void) {
int demo() {} //Error: nested function!!!
}
But you can declare a function just fine. It is actually equivalent to:
#include <stdio.h>
int demo(); //function declaration, not definition
int main(void) {
demo();
(*demo)();
return 0;
}
int demo(){
printf("Morning");
}
except that in your code the external forward demo()
declaration is only visible inside main
.
You can declare a function inside another function. This is allowed. The only thing is it is visible only inside the function in which it is declared.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With