The process of allocating memory while a program is running is called dynamic memory allocation. In C programming, dynamic memory allocation is achieved with the standard library functions malloc(), calloc(), realloc() and free().
To proceed to the next sections in our discussion on C programming language, we should learn the concept of void pointers, i.e. pointers of no specific type, and type casting, i.e. manually changing the data type of a variable. Type conversion can happen automatically (implicitly) or manually (explicitly). The later is termed as type-casting.
Pointers are used extensively in array operations. The name of the array is actually a reference to the address of the first element, rather than the actual array. Thus the array name is a pointer. So when we pass an array as an argument to a function, we are not actually passing a copy of the array (as we do in case of a variable), but we are passing a copy of the pointer to the first element of that array. This is the “pass by reference” hack that we discussed earlier.
To be able to reap the best benefits from pointers, you’ll have to have a deep understanding of them. This blog is going to be very conceptual and we might not be writing real-world value code here, but these program snippets will help you use pointers in a very productive and efficient manner in future. We’ll discuss two use cases of pointers that we generally overlook: strings and the scanf function.