can any one tell that i have a variable which is declared
as static but i want this variable to be visible to the
other files? how?
Answers were Sorted based on User's Feedback
Answer / vadivelt
It is not possible to directly access the static variable
of one file from another file. But we can access is it
in different way(by accessing the location).
Lets have a file1.c with following code:
static int a;
int *ptr = &a;/*ptr in Global scope, so by default its
storage class is extern*/
void func(void)
{
a = 30;
}
Here 'a' is static variable and it cannot be directly
accessed from another file. So create a pointer of same
data type (*ptr) and assign the address of the variable to
the pointer. Now whenever the variable value is changed in
file1.c, it will be updated in the location of 'a' and
pointer holds that location.
Now Lets have a second file with name main.c with the foll
code
#include<stdio.h>
#include<conio.h>
main()
{
extern int *ptr;
printf("%d\n", *ptr);
func();
printf("%d", *ptr);
getch();
}
Since *ptr is a extern variable and it holds the address of
a, whenever the value of the variable is changed in
file1.c, it will reflect in main.c also.
Here, when 1st printf() is executed, 'a' value would be 0.
Cos it is a static and defualt initial value is 0.
before 2nd printf() is encountered, 'a' value is changed to
30 in file1.c using func();
since we are accessing address of the variable using ptr
,the same value will reflect in main.c also.
In the same way if u want to change the value of static
variable in main.c
Just use *ptr = somevalue; it will reflect in variable 'a' in
file1.c
Is This Answer Correct ? | 3 Yes | 0 No |
What is indirect recursion? give an example?
Do you know the use of fflush() function?
how to find a 5th bit is set in c program
what is the purpose of the code, and is there any problem with it. bool f( uint n ) { return (n & (n-1)) == 0; }
write a program that prints a pascal triangle based on the user input(like how many stages) in an efficient time and optimized code?
What is the difference between text files and binary files?
How can you return multiple values from a function?
Program to find largest of three numbers without using comparsion operator?
What is undefined behavior?
stripos — Find position of first occurrence of a case- insensitive string int stripos ( char* haystack, char* needle, int offset ) Returns the numeric position of the first occurrence of needle in the haystack string. Note that the needle may be a string of one or more characters. If needle is not found, stripos() will return -1. The function should not make use of any C library function calls.
is it possible to change the default calling convention in c ?
what is the output of the following program? #include<stdio.h> void main() { int x=4,y=3,z; z=x-- -y; printf("\n%d %d %d",x,y,z); }