Массивы в Си
Описание
Предположим, мы хотим сохранить 50 имен учеников одного класса. Можно попытаться объявить 50 переменных, скажем, st_name0, st_name1, .., st_name49. Однако гораздо лучше определить все эти имена в одной переменной, которая называется массивом.
- Массив - это набор данных одного типа (и, следовательно, одного размера), хранящихся в последовательных ячейках памяти под одним именем.
- Весь массив объявлен все сразу.
- На каждый отдельный элемент в массиве можно ссылаться с помощью индексации. Индексированный означает, что элементы массива пронумерованы и всегда начинаются с 0.
В C элемент массива (т. Е. Отдельный элемент данных) указывается путем указания имени массива, за которым следует один или несколько нижних индексов, причем каждый нижний индекс заключен в квадратные скобки.
Объявление массива
Объявление массива похоже на форму обычного объявления. Общая форма:
typeName ArrayName [size] = {список значений}
Это объявляет массив с указанным размером, с именем ArrayName и типом typeName. Массив индексируется от 0 до (размер-1). Размер (в скобках) должен быть целочисленным литералом или постоянной переменной. Компилятор использует размер, чтобы определить, сколько места выделить (т. Е. Сколько байтов). Вот некоторые примеры :
int A[10]; // An array of ten integers; A[0], A[1], …, A[9]
char name[20]; // An array of 20 characters
float nums[50]; // An array of fifty floating numbers; nums[0], nums[1], …,nums[49]
int C[]; // An array of an unknown number of integers; C[0], C[1], …, C[size-1]
int table[5][10]; // A two dimensional array of integers
Вы также можете объявить массив следующим образом:
#define ROLL_NUMBERS 51
int classv[ROLL_NUMBERS];
const int Emp_salary = 35
float Employee[Emp_salary];
Пример: int A [10];
- Объявляет 10 целых чисел и может быть доступно по имени A
- Каждой переменной присваивается уникальное местоположение (местоположение также называется индексом). Диапазон расположения от 0 до (длина - 1). Для указанного массива диапазон местоположения составляет от 0 до 9.
Смотрите следующую диаграмму, которая представляет массив A [10]:
Индексирование в массивы
Чтобы ссылаться на один элемент массива, используйте arrayname [index].
Например :
A [4] содержит значение 48
A [9] содержит значение 0
Индексированные элементы могут использоваться как простые переменные.
printf («% d», A [4]); // печать 48
Элементы массива и петли
Элементы массива обычно используются в циклах for, см. Следующие коды:
for(x=0; x < max; x++)
A[x] = x*x;
sum = 0;
for(x=0; x < max; x++)
sum += B[x];
Инициализация массива
Мы объявляем нормальные переменные следующими способами:
int x;
х = 0;
или же
int x = 0;
В случае массива просто перечислите значения массива в наборе обозначений {}. Некоторые действительные объявления массива показаны ниже.
буквы char [5] = {'a', 'b', 'c', 'd', 'e'};
числа с плавающей запятой [3] = {13.25, 12.09, 8.1};
Использование элементов массива в выражениях
Элементы массива могут использоваться везде, где может использоваться переменная того же типа. Смотрите следующую схему и коды.
Пример: int A [10];
Индекс | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
значение | 15 | 8 | 14 | 45 | 48 | 45 | -57 | 45 | 1 | 0 |
х = А [1] * 2; / * устанавливает х в 16 * /
A [4] = 88; / * заменяет 48 на 88 * /
м = 6;
у = А [м]; / * устанавливает y в –57 * /
z = A [A [9]]; / * устанавливает z в 15 * /
Пример -1:
В массиве хранится семь чисел. Следующая программа печатает все числа этого массива, а также печатает числа в обратном порядке.
#include<stdio.h>
int main()
{
int M[10];
int j;
/* store seven numbers in array M */
M[0] = 2;
M[1] = 4;
M[2] = 6;
M[3] = 8;
M[4] = 10;
M[5] = 12;
M[6] = 14;
/* print numbers in M */
printf("Print all the Numbers : \n");
for (j = 0; j < 7; ++j)
printf("M[%d] = %d\n",j,M[j]);
/* print numbers in M backwards */
printf("\nFrom End to Beginning : \n");
for (j = 6; j >= 0; --j)
{
printf("M[%d] = %d\n",j,M[j]);
}
}
Выход:
Пример -2:
Следующая программа вычисляет простые числа от 1 до MXNO.
#include<stdio.h>
#define MXNO 50
int main()
{
int M[MXNO];
int j, n;
/* mark all numbers */
printf("The prime numbers are :\n\n");
for (j = 0; j < MXNO; ++j)
{
M[j] = 1;
}
for (j = 2; j < MXNO; ++j)
{
if (M[j])
{
printf("%d\n", j);
}
for (n = j+j; n < MXNO; n+= j)
{
M[n] = 0;
}
}
}
Копирование массивов:
У нас есть два массива list1 и list2
int list1 [6] = {2, 4, 6, 8, 10, 12};
int list2 [6];
и мы хотим скопировать содержимое list1 в list2. Для общих переменных (например, int x = 3, y = 5) мы используем простую инструкцию присваивания (x = y или y = x). Но для массивов следующее утверждение неверно.
Мы должны копировать между массивами элемент за элементом, и эти два массива должны иметь одинаковый размер. В следующем примере мы используем цикл for, который облегчает это.
#include <stdio.h>
main()
int list1[6] = {2, 4, 6, 8, 10, 12};
int list2[6];
for (int ctr = 0; ctr<6; ctr++)
{
list2[ctr] = list1[ctr];
}
printf("Elements of list2 :\n");
for (int ctr = 0; ctr<6; ctr++)
{
printf("%d ",list2[ctr]);
}
}
Выход:
Элементы списка 2: 2 4 6 8 10 12
Двумерный массив в C
Двумерный массив может использоваться для представления матрицы, стола или настольных игр (Tic Tac Toe, Sudoku и т. Д.). Позиции строк и столбцов приведены в виде последовательных индексов. Когда вы объявляете переменную такого массива, используйте пару квадратных скобок для каждого измерения. Смотрите следующий пример:
// Declare a two-dimensional array with 3 rows and 2 columns
int table[3][2]:
// create and initialize an array
int table[3][2] = { {10, 22}, {33, 44}, {45, 78} };
или же
int table[3][2] = {10, 22, 33, 44, 45, 78 };
or
int table[3][2] = {
{10, 22},
{33, 44 },
{45, 78 }
};
Смотрите следующую диаграмму, которая представляет вышеуказанный массив:
0 | 1 | |
0 | 10 | 22 |
1 | 33 | 44 |
2 | 45 | 78 |
В приведенном выше массиве:
Таблица [1] [1] содержит 22
Таблица [2] [0] содержит 45
Таблица [2] [2] является "массив вне границ"
Печать двумерного массива
Чтобы напечатать все элементы двумерного массива, мы используем дважды вложенный цикл for. В следующем примере есть 3 строки и 2 столбца.
#include <stdio.h>
main()
{
int row,col;
int table[3][2] = { {10, 22}, {33, 44}, {45, 78} };
for (row = 0; row < 3; row++)
{
for (col = 0; col < 2; col++)
{
printf("%d\t",table[row][col]);
}
printf("\n");
}
}
Выход:
Предыдущая: C сделать, пока цикл
Далее: Обзор C
Новый контент: Composer: менеджер зависимостей для PHP , R программирования