Static variable

From Wikipedia, the free encyclopedia

See also: Global variable and Static memory allocation

In computer programming, static variables typically have a broader scope than other variables. Their values may be set at run-time or may change subtly during program execution.

Contents

[edit] For constants

Computer programs may store constants in constant variables or in static variables, depending on the available features of the programming language. For example, a program that uses an approximation of pi might be easier to write, read, and maintain with a variable called "PI" instead of multiple occurrences of "3.14159".

[edit] For scope

Main article: Scope (programming)

In the C programming language, static is used with global variables and functions to set their scope to the containing file.

[edit] For local variables

Main article: Local variable

Most programming languages include the feature of subroutines. Variables local to subroutines (local variables) are usually created and destroyed within the subroutine itself. Some languages, however, (e.g., the C programming language) allow subroutines to retain the value of variables between calls, so that the function can preserve its state if necessary. For example, a static variable can record the number of times its subroutine has been executed. Doing so is otherwise possible using global variables or external storage, like a file on disk.

[edit] For class variables

Object-oriented programming languages use classes and objects. In this case, a class variable means a variable that can be seen and modified by all methods (called member functions in C++) of the class. This means, for example, that if the value of a class variable is changed by any method of the owning class, then all other methods of that class will see the changed value. In C++, class variables are known as static data members.

[edit] C# Example

public class Request
{
        private static int count;
        private string url;

        public Request()
        {
                //Create a new instance of Request
                //Count all requests
                Request.count++;
        }

        public string Url
        {
                get
                {
                        return this.url;
                }
                set
                {
                        this.url = value;
                }
        }

        public static int Count
        {
                get
                {
                        //Do not use the this keyword here
                        //as this refers to "THIS INSTANCE"

                        return Request.count;
                }
                //Do not allow the developer to SET this value
        }
}

[edit] C++ Example

class Request
{
        private:
                static int count;
                string url;
        
        public:
                void Request() { count++; }
                string Url() { url = value; return url; }
                int Count() const { return count; }
};

In this sample count applies to the class, while url applies to each instance

[edit] See also

In other languages