What does the static keyword do when used with a variable inside a function in C?
It makes the variable keep its value between function calls instead of being reinitialized each time the function runs.
Click to reveal answer
beginner
How does a static variable inside a function differ from a normal local variable?
A normal local variable is created and destroyed each time the function runs, but a static variable is created once and keeps its value between calls.
Click to reveal answer
intermediate
What is the effect of declaring a global variable as static in C?
It limits the variable's scope to the file where it is declared, so it cannot be accessed from other files.
Click to reveal answer
beginner
Why would you use a static variable inside a function?
To remember information between function calls without using global variables, like counting how many times the function was called.
Click to reveal answer
beginner
Can a static variable inside a function be accessed outside that function?
No, it has local scope limited to the function, but its value persists between calls.
Click to reveal answer
What happens to a static variable inside a function after the function finishes?
AIt keeps its value and exists until the program ends.
BIt is destroyed and loses its value.
CIt becomes a global variable.
DIt resets to zero automatically.
✗ Incorrect
A static variable inside a function keeps its value and exists for the entire program run.
Declaring a global variable as static means:
AIt becomes a local variable.
BIt can be accessed from any file.
CIt is only accessible within the file it is declared.
DIt is deleted after main() ends.
✗ Incorrect
Static global variables have file scope, so they cannot be accessed from other files.
Which keyword in C makes a variable keep its value between function calls?
Astatic
Bregister
Cextern
Dauto
✗ Incorrect
The static keyword makes a variable retain its value between calls.
If you want a variable to be visible only inside one source file, which keyword should you use?
Aextern
Bstatic
Cauto
Dregister
✗ Incorrect
Static limits the scope of global variables to the file they are declared in.
What is the initial value of a static variable if not explicitly initialized?
ARandom garbage value
BOne
CDepends on compiler
DZero or NULL
✗ Incorrect
Static variables are automatically initialized to zero if not set by the programmer.
Explain how the static storage class affects the lifetime and scope of variables in C.
Think about how long the variable exists and where it can be accessed.
You got /3 concepts.
Describe a practical example where using a static variable inside a function is helpful.
Imagine a function that needs to remember something each time it runs.
You got /3 concepts.
Practice
(1/5)
1. What does the static keyword do when used with a variable inside a function in C?
easy
A. Keeps the variable value between function calls
B. Makes the variable global
C. Deletes the variable after the function ends
D. Allows the variable to be accessed from other files
Solution
Step 1: Understand static inside a function
A static variable inside a function keeps its value even after the function finishes.
Step 2: Compare with other options
Static does not make variables global or accessible outside the file; it preserves value only inside the function.
Final Answer:
Keeps the variable value between function calls -> Option A
Quick Check:
Static inside function = value preserved [OK]
Hint: Static inside function means value stays between calls [OK]
Common Mistakes:
Thinking static makes variable global
Assuming static deletes variable after function ends
Confusing static with extern keyword
2. Which of the following is the correct way to declare a static variable inside a function in C?
easy
A. static count int = 0;
B. static int count = 0;
C. int static count = 0;
D. count static int = 0;
Solution
Step 1: Recall correct static syntax
The correct syntax places static before the type: static int count = 0;.
Step 2: Check other options
Other options have wrong order of keywords, which is invalid in C.
Final Answer:
static int count = 0; -> Option B
Quick Check:
Static keyword comes before type [OK]
Hint: Static always comes before the type in declaration [OK]
Common Mistakes:
Placing static after the variable name
Mixing order of keywords
Using invalid syntax like 'static count int'
3. What will be the output of the following C code?
void func() {
static int x = 0;
x++;
printf("%d ", x);
}
int main() {
for(int i = 0; i < 3; i++) {
func();
}
return 0;
}
medium
A. 1 1 1
B. 0 1 2
C. 1 2 3
D. 3 3 3
Solution
Step 1: Understand static variable behavior in func()
The static variable x is initialized once to 0 and keeps its value between calls.
Step 2: Trace the loop calls
Each call increments x by 1 and prints it. So outputs are 1, then 2, then 3.
Final Answer:
1 2 3 -> Option C
Quick Check:
Static variable increments across calls [OK]
Hint: Static variable keeps incrementing each call [OK]
Common Mistakes:
Assuming static resets each call
Confusing initial value with printed value
Expecting output to be zeros
4. Identify the error in the following code snippet:
void func() {
static int x;
}
int main() {
x = 5;
func();
return 0;
}
medium
A. No error, code runs fine
B. Missing initialization of static variable x
C. Static variables cannot be declared inside functions
D. Static variable x cannot be assigned outside its function
Solution
Step 1: Check variable scope
The static variable x is declared inside func(), so it is local to that function.
Step 2: Analyze assignment in main()
Trying to assign x = 5; in main() causes an error because x is not visible outside func().
Final Answer:
Static variable x cannot be assigned outside its function -> Option D
Quick Check:
Static inside function = local scope [OK]
Hint: Static inside function is local, can't access outside [OK]
Common Mistakes:
Thinking static variables are global
Ignoring variable scope rules
Assuming static variables must be initialized
5. Consider two C files: file1.c and file2.c.
In file1.c:
static int count = 0;
void increment() {
count++;
}
int getCount() {
return count;
}
In file2.c:
extern int count;
int main() {
increment();
printf("%d", getCount());
return 0;
}
What will happen when you compile and run these files together?
hard
A. Compilation error due to undefined reference to count
B. Prints 1
C. Prints 0
D. Runtime error due to static variable
Solution
Step 1: Understand static at file scope
The static int count has internal linkage, visible only in file1.c.
Step 2: Function access
increment() and getCount() are external functions that can access the static count since they are in the same file.
Step 3: Analyze extern usage
The declaration extern int count; in file2.c expects a global variable count defined elsewhere, but since count is static in file1.c, it is not visible externally, causing a linker error.
Final Answer:
Compilation error due to undefined reference to count -> Option A
Quick Check:
Static variables have internal linkage, extern cannot access them [OK]