register and const
Hints and immutability.
register and const is a free C Academy lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the C Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
The register Hint
register suggests that a variable be kept in a CPU register for speed. It is only a hint; modern compilers usually ignore it.
#include <stdio.h>
int main(void) {
register int i;
int sum = 0;
for (i = 0; i < 5; i++)
sum += i;
printf("sum = %d\n", sum);
return 0;
}You Cannot Take Its Address
Because a register variable might not live in memory, you may not take its address with &.
#include <stdio.h>
int main(void) {
register int x = 10;
printf("x = %d\n", x);
return 0;
}Why register Is Rare Today
Optimizing compilers already place hot variables in registers. The keyword is mostly historical now.
#include <stdio.h>
int main(void) {
int product = 1;
for (register int i = 1; i <= 4; i++)
product *= i;
printf("product = %d\n", product);
return 0;
}The const Qualifier
const makes a variable read-only after initialization. Trying to change it is a compile error.
#include <stdio.h>
int main(void) {
const int DAYS = 7;
printf("DAYS = %d\n", DAYS);
return 0;
}Constants Document Intent
Using const for fixed values makes code clearer and protects against accidental changes.
#include <stdio.h>
int main(void) {
const double PI = 3.14159;
double r = 2.0;
printf("area = %.2f\n", PI * r * r);
return 0;
}const With Pointers
const int *p means the pointed-to value cannot change through p. The pointer itself can still move.
#include <stdio.h>
int main(void) {
int x = 5;
const int *p = &x;
printf("*p = %d\n", *p);
return 0;
}Constant Pointer
int * const p means the pointer cannot change, but the value it points to can.
#include <stdio.h>
int main(void) {
int x = 5;
int * const p = &x;
*p = 9;
printf("x = %d\n", x);
return 0;
}const Function Parameters
Marking a parameter const promises the function will not modify it, which helps callers reason about behavior.
#include <stdio.h>
void show(const int n) {
printf("n = %d\n", n);
}
int main(void) {
show(42);
return 0;
}Immutable by Design
Prefer const for any value that should not change. It catches bugs at compile time.
#include <stdio.h>
int main(void) {
const int LIMIT = 100;
int x = 90;
if (x < LIMIT)
printf("under limit\n");
return 0;
}Combining const and Globals
A global const is a safe, shared constant available to the whole file.
#include <stdio.h>
const int VERSION = 2;
int main(void) {
printf("VERSION = %d\n", VERSION);
return 0;
}register and const Together
You can even mark a loop counter both ways, though const here means the loop body must not change it.
#include <stdio.h>
int main(void) {
int sum = 0;
for (int i = 0; i < 3; i++) {
const int doubled = i * 2;
sum += doubled;
}
printf("sum = %d\n", sum);
return 0;
}Quick Check
Test your understanding of register and const.
Recap: register and const
You learned two qualifiers.
registerhints at register storage, but is usually ignored- You cannot take the address of a register variable
constmakes a value read-only- Pointer constness has two flavors: const value vs const pointer
- Use
constgenerously for safety
Frequently asked questions
Is the “register and const” lesson free?
Yes — the full text of “register and const” is free to read here on the web, and the C Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the C Academy course, upgrade to CoddyKit PRO.
What will I learn in “register and const”?
Hints and immutability. You practise C Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start C Academy?
No prior experience is required. C Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “register and const” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this C Academy lesson?
Yes. Every C Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- auto and Local Scope
- static Variables
- extern and Global
- register and const