Registers are faster than memory to access, so the variables which are most frequently used in a C program can be put in registers using register keyword. The keyword register hints to compiler that a given variable can be put in a register. It’s compiler’s choice to put it in a register or not. Generally, compilers themselves do optimizations and put the variables in register.
1) If you use & operator with a register variable then compiler may give an error or warning (depending upon the compiler you are using), because when we say a variable is a register, it may be stored in a register instead of memory and accessing address of a register is invalid. Try below program.
2) register keyword can be used with pointer variables. Obviously, a register can have address of a memory location. There would not be any problem with the below program.
3) Register is a storage class, and C doesn’t allow multiple storage class specifiers for a variable. So, register can not be used with static . Try below program.
4) There is no limit on number of register variables in a C program, but the point is compiler may put some variables in register and some not.
Please write comments if you find anything incorrect in the above article or you want to share more information about register keyword.
- Pointers in C and C++ | Set 1 (Introduction, Arithmetic and Array)
- Understanding "volatile" qualifier in C | Set 1 (Introduction)
- Operators in C | Set 1 (Arithmetic Operators)
- Storage Classes in C
- Static Variables in C
- Enumeration (or enum) in C
- Understanding "volatile" qualifier in C | Set 2 (Examples)
- Const Qualifier in C
- Memory Layout of C Programs
- Initialization of static variables in C
- What are the default values of static variables in C?
- Static functions in C
- What is return type of getchar(), fgetc() and getc() ?
- Return values of printf() and scanf() in C/C++
- Understanding "extern" keyword in C