Pointer in c allow us to work directly with the computer memory.
Memory Addresses
In c programming whenever we declare a variable a space will be allocated in the memory for the variable and C allows us to access the address of the variable. We use &
with variable name to access the memory address.
Example:
int main() { int age = 25; printf("%p", &age); return 0; }
Output:
0x7ffcad58272c
The format specifier %p
(pointers) and &
is used to get the memory address where 25 is located.
scanf("%d", &age);
- with scanf we are instructing the compiler to store the input value at the memory address specified by this &age.
Pointer Variable
The pointer variable stores the memory addresses of the available value.
Example: int* ptr;
Assigning value(memory address) to a pointer variable
int main() { int age = 25; printf("%p", &age); int* ptr = &age; //assigned value. printf("\n%p", ptr); return 0; }
Access value using pointer
Here we are trying to access the value of a variable using pointer variable.
int main() { int age = 25; int* ptr = &age; printf("Address: %p\n", ptr); printf("Value: %d", *ptr); return 0; }
printf("Value: %d", *ptr);
- it gives the value stored in a memory address.
Change value using pointer
int main() { int age = 25; int* ptr = &age; *ptr = 31; printf("%d", age); return 0; }
In the above code, the initially assigned value is 25.
*ptr = 31;
- it assigns a new value pointed by the ptr variable.
printf("%d", age);
- now the value is changes to 31. because it points directly to the address and change the value to 31.
int* ptr = 32;
(Invalid)
ptr
is a pointer and it can only store memory address. And if we try to assign a value or number to it then it will become invalid.
*ptr = &number;
(invalid)
*ptr
stores the value and if we try to assign a memory address then it becomes invalid.
ptr = &number;
(valid) - assigning address.
*ptr = number;
(valid) - assigning value.
Top comments (0)