Введение
В программировании на C массив указателей - это массив, каждый элемент которого является указателем на другой тип данных, например, int, char, float и т.д. В этом практическом занятии мы узнаем, как обращаться к массиву указателей на целые числа и массиву указателей на символы.
Массив указателей на целые числа
В этом шаге мы будем обращаться к массиву указателей на целые числа. Откройте файл main.c в директории ~/project/ и вставьте следующий код:
#include <stdio.h>
// Глобальное объявление.
const int MAX = 5;
int main() {
printf("\n\n\t\t==== Массив указателей на целые числа ====\n\n\n");
int var[] = {10, 20, 30, 40, 50}; // инициализация массива(здесь var) указателей на int
int i = 0;
/*
ptr - это массив указателей на int, то есть
он хранит адрес каждого элемента массива
*/
int *ptr[MAX];
for(i = 0; i < MAX; i++) {
/*
Назначьте адрес каждого элемента массива
элементу массива ptr
*/
ptr[i] = &var[i];
}
for(i = 0; i < MAX; i++) {
/*
ptr[i] хранит адрес элемента var[i].
Следовательно, *ptr[i] возвращает значение элемента,
хранящегося в месте ptr[i]
*/
printf("Value of var[%d] = %i\n\n", i, *ptr[i]);
}
printf("\n\n\t\t==== Конец программы ====\n\n\n");
return 0;
}
Эта программа инициализирует массив указателей на целые числа и назначает адрес каждого элемента массива массиву указателей. Затем она выводит значение каждого элемента с использованием массива указателей.
Массив указателей на символы
В этом шаге мы будем обращаться к массиву указателей на символы. Вставьте следующий код после кода предыдущего шага:
#include <stdio.h>
// Глобальное объявление.
const int MAX = 4;
int main() {
printf("\n\n\t\t==== Массив указателей на символы ====\n\n\n");
char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // инициализация массива(здесь names) указателей на char
int i = 0;
for(i = 0; i < MAX; i++) {
printf("Value of names[%d] = %s\n\n", i, names[i]);
}
printf("\n\n\t\t==== Конец программы ====\n\n\n");
return 0;
}
Эта программа инициализирует массив указателей на символы и назначает адрес первого символа каждой строки массиву указателей. Затем она выводит полное имя каждого элемента с использованием массива указателей.
Компилировать и запустить программу
В этом шаге мы скомпилируем и запустим программу. Откройте терминал и перейдите в директорию ~/project/. Введите следующую команду для компиляции программы:
gcc main.c -o main
После успешной компиляции введите следующую команду для запуска программы:
./main
Эта команда выполнит программу и покажет вывод в терминале:
==== Массив указателей на целые числа ====
Value of var[0] = 10
Value of var[1] = 20
Value of var[2] = 30
Value of var[3] = 40
Value of var[4] = 50
==== Массив указателей на символы ====
Value of names[0] = Google
Value of names[1] = Amazon
Value of names[2] = Facebook
Value of names[3] = Apple
==== Конец программы ====
Полный код
#include <stdio.h>
// Глобальное объявление.
const int MAX = 5;
int main() {
printf("\n\n\t\t==== Массив указателей на целые числа ====\n\n\n");
int var[] = {10, 20, 30, 40, 50}; // инициализация массива(здесь var) указателей на int
int i = 0;
/*
ptr - это массив указателей на int, то есть
он хранит адрес каждого элемента массива
*/
int *ptr[MAX];
for(i = 0; i < MAX; i++) {
/*
Назначьте адрес каждого элемента массива
элементу массива ptr
*/
ptr[i] = &var[i];
}
for(i = 0; i < MAX; i++) {
/*
ptr[i] хранит адрес элемента var[i].
Следовательно, *ptr[i] возвращает значение элемента,
хранящегося в месте ptr[i]
*/
printf("Value of var[%d] = %i\n\n", i, *ptr[i]);
}
printf("\n\n\t\t==== Массив указателей на символы ====\n\n\n");
char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // инициализация массива(здесь names) указателей на char
i = 0;
for(i = 0; i < MAX; i++) {
printf("Value of names[%d] = %s\n\n", i, names[i]);
}
printf("\n\n\t\t==== Конец программы ====\n\n\n");
return 0;
}
Резюме
В этом практическом занятии мы научились обращаться к массиву указателей на целые числа и массиву указателей на символы. Массив указателей - это массив, в котором каждый элемент является указателем на другой тип данных. Мы узнали, как инициализировать массив указателей, как назначить адреса элементов массива массиву указателей и как обращаться к элементам массива с использованием массива указателей.



