C has an interesting and powerful feature of pointers. It differs it from other languages. As the name suggests it points to something. Whenever we declare some data type it holds some memory. If we define a variable ptr then, &ptr is the address in memory.
Example:
#include
int main(){
int ptr = 12;
printf("Value: %d\n",ptr);
printf("Address: %d",&ptr);
return 0;
}
In above code, value 12 is stored in some memory location. ptr is the name for that location. The address of the memory can be presented by &ptr. When we hold the address in a variable we call it a pointer. Pointer variable are the special types of variables. They hold memory address not the data. In simple terms a variable that holds address value is called a pointer variable or simply a pointer. A pointer variable contains the address in memory of another variable, object, or function.
How to declare Pointer:
Pointer variables are declared using a data type followed by an asterisk(*) and then the pointer variables name.
data_type* pointer_variable_name;
int* ptr;
Example:
/* Source code*/
#include
int main(){
int* ptra;
int a;
a = 5;
printf("Address of a:%d\n",&a);
printf("Value of a:%d\n\n",a);
ptra = &a; # assign address of a in pointer variable
printf("Address of pointer ptra:%d\n",ptra);
printf("Content of pointer ptra:%d\n\n",*ptra);
a = 8;
printf("Address of pointer ptra:%d\n",ptra);
printf("Content of pointer ptra:%d\n\n",*ptra);
*ptra = 2;
printf("Address of ptra:%d\n",&ptra);
printf("Value of ptra:%d\n\n",ptra);
return 0;
}
*NOTE: Address location will be different when you run this program
Output:
Address of a:-845878428
Value of a:5
Address of pointer ptra:-845878428
Content of pointer ptra:5
Address of pointer ptra:-845878428
Content of pointer ptra:8
Address of ptra:-845878424
Value of ptra:-845878428
Advantages of pointers:
- Provides direct access to memory
- Pointers helps us building complex data structures like stack, queues, trees etc.
- Allows resizing dynamically allocated memory block.
- Pointers Reduce the execution time of program
- Provides an alternate way to access array elements
- Pointers allows dynamic memory allocation and deallocation
0 Comment(s)