What is going on here. Copy this C code , compile and run. What do you think is going on? Note I don't want the answer, I know what's going on here. This is just something for the rookies to play with...

Also this is not the best way to write code...

#include <stdio.h>
#include <stdlib.h>

int* myint(void)
{
	static int myint = 9;
	fprintf(stdout, "myint now equals->%d\n", myint);
	return &myint;
}

int main(int argc, char**argv)
{
	*(myint()) = 12356;
	myint();

	exit(EXIT_SUCCESS);
}

Edited 6 Years Ago by gerard4143: n/a

>int main(int argc, char**argv)
If you don't use the command line arguments, why include them?

>exit(EXIT_SUCCESS);
Do you have any particular reason for calling exit rather than simply returning?

Narue's version

/*The Narue Version*/
/*As for why I include the extras(exit(EXIT_SUCCESS),int argc, char**argv)...I don't know must be habit*/
#include <stdio.h>

int* myint(void)
{
	static int myint = 9;
	fprintf(stdout, "myint now equals->%d\n", myint);
	return &myint;
}

int main()
{
	*(myint()) = 12356;
	myint();

	return 0;
}

What is going on here. Copy this C code , compile and run. What do you think is going on? Note I don't want the answer, I know what's going on here. This is just something for the rookies to play with...

Also this is not the best way to write code...

#include <stdio.h>
#include <stdlib.h>

int* myint(void)
{
	static int myint = 9;
	fprintf(stdout, "myint now equals->%d\n", myint);
	return &myint;
}

int main(int argc, char**argv)
{
	*(myint()) = 12356;
	myint();

	exit(EXIT_SUCCESS);
}

no replies??

i am not a rookie :(
in my very limited knowledge i can say since it is static , its life time is until the complete program terminates. since we get its address of that variable as the return and then we are modifying it, we get the updated value in the next calls...
but i know there s something else to it.. i want to know if there s something extra..

(I'm not sure if this is correct, but avert your eyes if you're still working on it)
**********************************************************

I think the statement in main is interpreted as a redeclaration of the function.

This article has been dead for over six months. Start a new discussion instead.