C Tutorial

C Tutorial C Language Environment Setup Execution flow of C program C printf and Scanf C Data type C Token Variable in C Operators in C Comments in C Escape Sequence in C C – Storage Classes C Decision control statement Loop Statement in C Break, continue and goto statement in C Type Casting in C Function in C Recursion in C String in C C Array Pointer in C Dynamic memory allocation C –Structure Nested Structure in C Union in C File Handling in C C pre-processor Static Function In C Sizeof In C Selection Sort In C Scope Of Variables In C Runtime Vs Compile Time In C Random Access Lseek In C Queue Implementation In C Pseudo Code In C Prototype In C Pointer To Pointer In C Pointer Arithmetic In C Passing Array To Function In C Null Character In C Merge Sort In C Macros In C Library Functions In C Memory Leak In C Int In C Goto And Labels In C Fibonacci Series In C Fflush In C Derived Data Types In C Data Types In C Const Vs Volatile In C Character Set In C Character Class Tests In C Calloc In C C Pointers Arrays In C Include In C Clrscr In C C Vs Java String Literals In C Types Of Pointers In C Variables In C Volatile In C Why C Is A Middle Level Language Infix To Postfix Program In C Ceil function in C LCM of two numbers in C Quick sort in C Static in C function pointer as argument in C Top Array Keywords in C Add two numbers using the function in C Armstrong program in C using function Array, Declaring Arrays and Array Initialization Limitations of Inline Function in C Merge and Merge sort with example in C Do-While Loop in C For Loop in C While-Loop in C Difference between while and do-while loop in C Array Of Structures in C Data Structures And Algorithms in C Types Of Structures In C How to Avoid Structure Padding in C Use of Structure in C Do WHILE LOOP in C Programming Examples For Loop in C Programming Examples Entry Control Loop in C Exit control loop in C Infinite loop in C Nested loop in C pow() function in C String Handling functions in C Prime Number code in C Factorial Program in C using For Loop Factorial Program in C Using While Loop Fibonacci Series in C Using For Loop Fibonacci series in C using while loop Prime Number Program in C using for Loop While Loop in C programming examples Built-in functions in C Assert() Function C vs Java Strings Call Back Function in Embedded C Else If Ladder fgets() function Ftell() Function getc() function getch() function gets() function Heap Sort Nested if-else statement Pi() Function Positioning of file Write() function abs() function in C Attributes in C C program to find factorial of a number using Recursion Ferror() in c fopen() function in C Fibonacci series program in C using Recursion Formatted Input and output function in C Snake Game in C User Defined Functions in C Beep() function in C Cbrt() function in C Hook() function in C Isalnum() function in C C Program to find the Roots of a Quadratic Equation C Switch Statements Difference between rand() and srand() function in C Difference between while and for loop in C Doubly Linked list in C Example of Iteration in C How to use atoi() function in C How to use floor() function in C How to use sine() function in C How to use Typedef Struct in C Integer Promotions in C C Program Swap Numbers in cyclic order Using Call by Reference C Program to Find Largest Number Using Dynamic Memory Allocation C Program to Find the Largest Number using Ternary Operator C/C++ Program to Find the Size of int, float, double and char Find the Largest Three Distinct Elements in an Array using C/C++ Loop Questions in C Modulus on Negative Numbers in C Multiplication table program in C using For loop Nested Loops in C Programming Examples C Program for Mean and Median of an Unsorted Array Results of Comparison Operations in C and C++ Reverse a Stack using Recursion in C Simple hash() function in C strcat() Function in C Sum of N numbers in C using For loop Use of free() function in C Write a program that produces different results in C and C++ C Function Argument and Return Values Keywords in C Bank management system in C Calendar application in C Floor() Function in C Free() Function in C How to delete a file in C How to move a text in C Remove an element from an array in C Unformatted input() and output() function in C What are linker and loader in C fork() in C GCD program in C Branching Statements in C Comma Operator in C Control statement in C Double Specifier in C How to create a binary file in C Long int in C Palindrome Number in C Pure Virtual Function in C Run Time Polymorphism in C Types of Array in C Types of Function in C What is a buffer in C What is required in each C Program Associativity of Operators in C Bit Stuffing Program in C Actual and Formal Parameters Addition of two Numbers in C Advantages of function in C Arithmetic Progression Program in C Binomial Coefficient Program in C Difference between Array and List in C Diffie-Hellman Algorithm in C How to convert a number to words in C How to convert a string to hexadecimal in C Difference between If and Switch Statement in C

Static in C

Static is a keyword that is used in the C programming language. It can be used both as variables and as functions. In other words, it can be declared both as a static variable and a static function.

Static variables have the advantage of preserving their value even if they are out of scope. A regular variable's scope is confined to how it is defined, whereas a static variable's scope is unlimited. Static variables preserve their previous value in their earlier scope and are not initialized again in the new scope.

Syntax:

static dataTypevariableName = variableValue;

In English, the word static means "pertaining to or characterised by a permanent or immobile situation." Computer language, on the other hand, is used to represent things that do not change over time.A variable that is stored using static is assigned address during build time. It will therefore be safe to use a pointer to such a variable.

  • During the building process, a variable that is saved using static is given an address. As a result, using a reference to a very variable will be safe.

E.g., While the application is compiling and executing, a static int variable remains in memory. When a function call where the variable is created ends, the regular variable is destroyed.

#include <stdio.h>
	int fun()
	{
		static int count = 0;
		count++;
		return count;
	}
	int main()
	{
		printf (“%d \n”, fun());
		printf (“ %d \n”, fun());
		return 0;
	}

Output:

1 2
  • Static variables are assigned memory in the data segment, not the stack segment, and a static function's lifespan spans the whole programme.
  • Inside a structure, static variables should not be defined. The reason for this is that the C compiler expects all of the structure components to be in the same place. That is, structure members' memory allocation should be contiguous. It will be allowed to specify structure within the function, as well as dynamically or globally allocate memory.All structure members should reside in the same memory because the value for the structure element is fetched by counting the offset of the element form the beginning address of a structure. Differentiating one member from the data segment negates the purpose of a centralized and decentralized, since a static variable can be applied to the whole structure.
  • Static variables, such as global variables, are initialized as 0.

E.g., the value of X can be printed as 0. In comparison, the value of Y is something garbage.

#include <stdio.h>
	int main() 
	{
		static int x;
		int y;
		printf(“ %d \n”, x, y);
	}
  • In the C programming language, static variables can be initialized using constant literals.
  • A static local variable is a local variable that has been declared using the static keyword. When a function updates a static local variable, the changed value is available to all subsequent functions.Static functions and static global variables are possible in the C programming language.
  • A function's static variable retains its value between invocations.
  • A static method is a member function of a class that is defined using the static keyword. It may be accessible by all instances of a class; however, it cannot be limited to a single instance.
  • A static global variable or a function is seen only in its file where it is declared at.

E.g.:

#include <stdio.h>
#include <conio.h>
void book()
{
int x = 10;
static int y = 10;


x += 5;
y += 5;


printf (“x = %d, y = %d \n”, x, y);
}
int main()
{
int i;
for (i = 0; i<10; ++i)
	book();
}

Output:

x = 15, y = 15
x = 15, y = 20
x = 15, y = 25
x = 15, y = 30
x = 15, y = 35
x = 15, y = 40
x = 15, y = 45
x = 15, y = 50

If a function has to retain some state among invocations and you don't want to employ global variables, static help is helpful. This should be used with caution, as it may make your code thread-safe while also making it more difficult to understand.

Static is also often used as a kind of access control. Developing various features in the C programming language exposes a few public functions to users; the rest of the functions should be made static so that the user cannot access them, which is known as encapsulation.

The use of static keywords has a variety of applications. Limiting the scope of variables declared within a function or module is the most effective use.

Static variables and static functions can be concealed from the outside world by using static keywords, which behaves similarly to the usage of private and public in more object-oriented languages.



ADVERTISEMENT
ADVERTISEMENT