
Today, let’s talk about pointers in C language—this “address navigator” in the programming world. Pointers are like a “GPS” in programming, helping us accurately locate and manipulate data in memory. Mastering the essence of pointers will elevate your programming skills to a new level.
Definition of Pointers and Memory Addresses
In C language, pointers are a very core concept. Imagine memory as a huge warehouse, where each byte has a unique address. When we define a variable, the system allocates a space in memory for that variable and assigns it an address. Pointers are variables used to store these addresses.
The format for defining a pointer variable is as follows:

For example:

Here, i_pointer is a pointer variable that stores the address of an integer variable. Note that the * symbol here indicates that this is a pointer variable, not the content of the pointer variable.
Address Operator and Dereference Operator
In C language, there are two very important operators: Address Operator & and Dereference Operator *.
Address Operator &: This operator is used to obtain the address of a variable. For example:

In this example, &i obtains the address of the variable i and assigns it to the pointer variable p.
Dereference Operator *: This operator is used to obtain the value pointed to by an address. For example:

In this example, *p indicates that through the pointer p we obtain the value in the address it points to, which is the value of the variable i.
Memory Occupation of Pointer Variables
Pointer variables themselves occupy a certain amount of space in memory. In a 32-bit system, pointer variables typically occupy 4 bytes; in a 64-bit system, pointer variables occupy 8 bytes. This is because pointer variables store addresses, and the size of an address depends on the system’s bitness.
Pointers and Data Types
When defining a pointer variable, its base type must be specified. The base type determines the data type pointed to by the pointer. For example:

This means that when you access data through a pointer, the system interprets the data in memory based on the pointer’s base type. For example, if i_pointer points to an address, *i_pointer will retrieve an integer value; if f_pointer points to the same address, *f_pointer will retrieve a floating-point value.
Common Misconceptions about Pointers
When learning and using pointers, there are several common misconceptions to be aware of:
1.Difference between Pointer Variable Name and Pointer: The pointer variable name (like p) and the pointer (like &i) are different. The pointer variable name is an identifier, while the pointer is an address.
2.Pointer Types: Pointer variables must specify their type. For example, int *p and float *p are different; the former points to an integer variable, while the latter points to a floating-point variable.
3.Dereferencing Pointers: The dereference operation * must be used with caution. If a pointer does not point to a valid memory address, dereferencing it will lead to undefined behavior.
Initialization and Assignment of Pointers
Pointer variables must be initialized before use. Uninitialized pointers may point to random memory addresses, leading to program crashes. For example:

The correct approach is to initialize the pointer before use:

Pointers and Memory Management
Pointers play an important role in memory management. Through pointers, we can dynamically allocate and free memory. For example, using the malloc function to dynamically allocate memory:

In this example, malloc allocates a block of memory and returns its address, which is stored in p. After use, the memory must be freed using the free function to avoid memory leaks.
Applications of Pointers
Pointers are widely used in C language, especially in function calls and data structures. Through pointers, we can achieve data passing and sharing. For example, passing pointers in function calls:

In this example, the change function modifies the value of i.
Conclusion
Pointers are a very powerful and flexible tool in C language. By mastering the essence and usage of pointers, you will be able to operate memory and handle data more efficiently. Remember, pointers are like a “GPS” that helps you accurately locate and manipulate data in memory. I hope today’s explanation gives you a deeper understanding of pointers, and I wish you excellent results on your graduate school entrance exams!
END