кодесурса
«C

Массивы в Си

script1adsense2code
script1adsense3code

Описание

Предположим, мы хотим сохранить 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]:

Индекс 0 1 2 3 4 5 6 7 8 9 Значение 15 8 14 45 48 45 -57 45 1 0

Индексирование в массивы

Чтобы ссылаться на один элемент массива, используйте 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;

В случае массива просто перечислите значения массива в наборе обозначений {}. Некоторые действительные объявления массива показаны ниже.

int num [6] = {1, 3, 5, 7, 9, 11};
буквы 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). Но для массивов следующее утверждение неверно.

list2 = list1;

Мы должны копировать между массивами элемент за элементом, и эти два массива должны иметь одинаковый размер. В следующем примере мы используем цикл 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");
  } 
}

Выход:

«2d

Предыдущая: C сделать, пока цикл
Далее: Обзор C

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code