Pointers in objective-C are helpful to complete our programming tasks easily. Some tasks, for example, dynamic memory allocation, cannot be performed without pointers. We must learn pointers to work efficiently as objective-C programmers.
A pointer is referred to as a variable, and its value is the memory location of another variable. We must declare the pointer before storing any address in it. The basic syntax for declaring a pointer is as follows:
type *pointer_name
The type shows the data type of pointer
. It must be a valid type of objective-C language. The variable_name
shows the name of the pointer variable. We must use an asterisk *
while declaring the pointer. The following are some examples regarding pointer declaration:
float *f1; /* pointer of type float*/
int *num1; /* pointer of type integer */
char *c1 /* pointer of type character */
The real data type regarding all the pointers of type int
, float
, or char
, and so on. It is a lengthy hexadecimal number that shows the memory address of a variable.
Let’s discuss some crucial operations that can be done with the help of pointers:
Here is an example to understand the declaration and working of pointers:
#import <Foundation/Foundation.h>int main () {int v1 = 10; /* real declaration of variable*/int *p1; /* declaring the pointer variable*/p1 = &v1; /* storing the memory address of v1 in pointer variable*/NSLog(@"The memory address of v1 variable: %x\n", &v1 );/* The address stored in the pointer variable */NSLog(@"Memory Address stored in p1 variable: %x\n", p1 );/* accessing the value by using the pointer */NSLog(@"The Value of *p1 variable: %d\n", *p1 );return 0;}
NULL
pointersIf we do not have the particular address to be allocated, then a NULL
pointer is always a perfect choice in this regard. It must be done when we declare the variable. If the NULL
value is assigned to a pointer, it is known as a NULL
pointer. Let’s discuss an example regarding it:
#import <Foundation/Foundation.h>int main () {int *np = NULL;NSLog(@"The Pointer's value is : %x\n", np );return 0;}
Programs cannot access the memory at address 0 in some operating systems because OS may reserve the space or memory. We can also use if
statements to check the pointer.
Let’s discuss some more concepts regarding pointers:
We can perform three arithmetic operators on pointers. These operators are ++,–, +,-.
We can also define an array of the pointer. This array can hold the number of pointers in int
.
Another concept is pointer to pointer. It means we can have a pointer on a pointer.
Passing pointers to the function is another crucial concept and it should be considered while learning about objective-C pointers. We can pass arguments by address or reference to the function. It enables the passed parameters to be altered in calling the function through the called function.
Objective-C also permits returning a pointer to a local, static variable. It also returns the dynamically allocated memory location.