Pointers and Arrays
In C language, pointers and arrays are closely related concepts, and they can be used together in various ways.
Pointer to Array:
In C, you can create a pointer to an array, which is a variable that points to the first element of an array. The syntax for creating a pointer to an array is as follows:
data_type (*pointer_name)[array_size];
Here, data_type
is the data type of the elements in the array, pointer_name
is the name of the pointer variable, and array_size
is the size of the array.
For example, if you have an array of integers named my_array
, you can create a pointer to this array as follows:
int my_array[5] = {1, 2, 3, 4, 5};
int (*my_ptr)[5] = &my_array;
In this example, my_ptr
is a pointer to the my_array
array, and &my_array
is the address of the first element of the my_array
array.
An array of Pointers:
You can also create an array of pointers in C, which is an array of variables that hold the memory addresses of other variables. The syntax for creating an array of pointers is as follows:
data_type *pointer_array_name[array_size];
Here, data_type
is the data type of the variables that the pointers in the array will point to, pointer_array_name
is the name of the pointer array, and array_size
is the size of the array.
For example, if you have three variables of type int
named a
, b
, and c
, you can create an array of pointers to these variables as follows:
int a = 1, b = 2, c = 3;
int *ptr_array[3] = {&a, &b, &c};
In this example, ptr_array
is an array of pointers to int
variables and it contains the memory addresses of the a
, b
, and c
variables.
Pointer Arithmetic and Array Indexing:
In C, you can use pointer arithmetic and array indexing to access the elements of an array through a pointer. Pointer arithmetic involves adding or subtracting an integer value from a pointer to move it to a different memory location, and array indexing involves using the index notation to access the elements of an array.
For example, if you have a pointer to an array of integers named my_ptr
, you can use pointer arithmetic to access the second element of the array as follows:
int my_array[5] = {1, 2, 3, 4, 5};
int *my_ptr = &my_array[0];
int second_element = *(my_ptr + 1); // use pointer arithmetic to access the second element
In this example, second_element
will be assigned the value 2
, which is the value of the second element of the my_array
array.
Alternatively, you can use array indexing with a pointer to access the elements of an array, like this:
int third_element = my_ptr[2]; // use array indexing to access the third element
In this example, third_element
will be assigned the value 3
, which is the value of the third element of the my_array
array.