Home >Backend Development >C++ >Pointers in C Functions: Pass by Value or Reference?
Passing Pointer Arguments in C : Pass by Value or Pass by Reference?
In C , it is a common misconception that passing a pointer argument is equivalent to passing by value. However, this is not the case.
Pointers Are Passed by Value
When a pointer is passed to a function, the value of the pointer, that is, the memory address it points to, is copied into the function's local memory. This means that any changes made to the pointer inside the function will not affect the original pointer variable.
Changing the Pointed-to Value
However, changes made to the value that the pointer points to will be reflected in the original variable. This is because the pointer itself stores the address of the original object, not the object itself.
Modifying the Pointer Value
If you wish to modify the pointer value within a function, you need to use a pointer to pointer. When you pass a pointer to pointer, the address of the original pointer is copied into the function. This allows you to modify the original pointer from within the function.
Standard Practice
In C , it is acceptable and considered standard practice to use a pointer to pointer as an argument when you need to modify the pointer value within a function. This is a common technique in C and C , as references were not introduced until later versions of C .
References vs. Pointers
In modern C , references are preferred over pointers for several reasons:
However, references are not supported in C, and they break the pass-by-value rule.
The above is the detailed content of Pointers in C Functions: Pass by Value or Reference?. For more information, please follow other related articles on the PHP Chinese website!