C Массив указателей

Указатели в C

и подобные адреса.

Массив указателей хранит набор указателей, и каждый указатель может указывать на другой объект данных.

Массивы указателей обычно используются для работы с несколькими объектами данных, такими как массивы строк или массивы других сложных структур данных.

Давайте рассмотрим пример, в котором используется массив из 3 целых чисел:

Пример

#include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i; for (i = 0; i < MAX; i++) { printf("Значение var[%d] = %d\n", i, var[i] ); } return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200

Может возникнуть ситуация, когда нам нужен массив для хранения указателей на int, char или другие типы данных.

Ниже приведено объявление массива указателей, указывающих на целые числа:

int *ptr[MAX];

Здесь,ptrобъявлен как массив, состоящий из MAX целочисленных указателей. Следовательно, каждый элемент в ptr является указателем на значение int. В следующем примере используются три целых числа, которые будут сохранены в массиве указателей, как показано ниже:

Пример

#include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i, *ptr[MAX]; for ( i = 0; i < MAX; i++) { ptr[i] = &var[i]; /*Присвойте адрес целого числа*/ } for ( i = 0; i < MAX; i++) { printf("Значение var[%d] = %d\n", i, *ptr[i] ); } return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200

Вы также можете использовать массив указателей на символы для хранения списка строк, как показано ниже:

Пример

#include <stdio.h> const int MAX = 4; int main () { const char *names[] = { "Zara Ali", "Hina Ali", "Nuha Ali", "Sara Ali", }; int i = 0; for ( i = 0; i < MAX; i++) { printf("Значение names[%d] = %s\n", i, names[i] ); } return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

Value of names[0] = Zara Ali
Value of names[1] = Hina Ali
Value of names[2] = Nuha Ali
Value of names[3] = Sara Ali

Рассмотрим другой простой пример. Сначала мы объявляем массив указателей ptrArray, содержащий три указателя на целые числа. Затем мы заставляем эти указатели указывать на различные целочисленные переменные num1, num2 и num3 соответственно. Наконец, мы используем массив указателей для доступа к значениям этих целочисленных переменных.

Пример

#include <stdio.h> int main() { int num1 = 10, num2 = 20, num3 = 30; // Объявите массив указателей на целые числа, содержащий три указателя int *ptrArray[3]; // Направьте указатели на различные целочисленные переменные ptrArray[0] = &num1; ptrArray[1] = &num2; ptrArray[2] = &num3; // Используйте массив указателей для доступа к значениям этих целочисленных переменных printf("Значение по индексу 0: %d\n", *ptrArray[0]); printf("Значение по индексу 1: %d\n", *ptrArray[1]); printf("Значение по индексу 2: %d\n", *ptrArray[2]); return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

Value at index 0: 10
Value at index 1: 20
Value at index 2: 30

Массивы указателей очень полезны в C, особенно при работе со структурами данных с неопределённым количеством элементов, такими как динамически выделяемые массивы строк или динамически создаваемые массивы структур.

Указатели в C

Другие расширения