Golgappa.net | Golgappa.org | BagIndia.net | BodyIndia.Com | CabIndia.net | CarsBikes.net | CarsBikes.org | CashIndia.net | ConsumerIndia.net | CookingIndia.net | DataIndia.net | DealIndia.net | EmailIndia.net | FirstTablet.com | FirstTourist.com | ForsaleIndia.net | IndiaBody.Com | IndiaCab.net | IndiaCash.net | IndiaModel.net | KidForum.net | OfficeIndia.net | PaysIndia.com | RestaurantIndia.net | RestaurantsIndia.net | SaleForum.net | SellForum.net | SoldIndia.com | StarIndia.net | TomatoCab.com | TomatoCabs.com | TownIndia.com
Interested to Buy Any Domain ? << Click Here >> for more details...

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?

Answer Posted / 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



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

How can I write functions that take a variable number of arguments?

1126


Explain with the aid of an example why arrays of structures don’t provide an efficient representation when it comes to adding and deleting records internal to the array.

3145


What is clrscr ()?

1106


How do you do dynamic memory allocation in C applications?

1083


What is the use of putchar function?

1055


Is there a way to jump out of a function or functions?

1091


What is a nested formula?

1144


What is difference between static and global variable in c?

1044


What is meant by errors and debugging?

1099


Why c is called object oriented language?

1057


Write a program for Overriding.

1155


I was asked to write a program in c which when executed displays how many no.of clients are connected to the server.

2363


What is meant by inheritance?

1086


What is keyword with example?

1061


Are the outer parentheses in return statements really optional?

1111