Одномерные и многомерные массивы.

В программах очень часто приходится обрабатывать большие объёмы однотипных данных. Применять обычные переменные для этого очень неудобно: представьте себе 1000 переменных с разными именами и одинакового типа, которые нельзя обработать в цикле. Эту проблему позволяет решить использование массивов.

Массив– совокупность переменных (элементов) одинакового типа и собщим названием. Доступ к элементам массиваосуществляется простым указанием номера элемента – индекса.

В языке Си нумерация элементов массива начинается с нуля!

 

Примеры объявления массивов:

 

int a[10]; // Целочисленный массив a, размер – 10 элементов

double vect[20]; // Массив вещественных чисел vect, в нём 20 элементов

char str[1024]; // Символьный массив на 1024 элемента

 

 

При объявлении массива его элементам можно сразу присвоить нужные значения (т.е. инициализировать массив):

int x[5] = {10, 20, 30, 40, 50};

char str[] = “Hello!”; // Автоматическое

int a[] = {1, 2, 3}; // определение размера

 

Примеры обращения к элементам массива:

a = x[0];

printf(“%d\n”,x[0]);

scanf(“%d”, &x[0]);

Примечания:

1. В памяти компьютера элементы массива располагаются в виде единого блока, друг за другом:

x[0] x[1] x[2] x[3] x[4]

10 20 30 40 50

2. В языке Си нет проверки правильности индекса (т.е. номера элемента). Выход за границы массива чреват непредсказуемыми последствиями.

 

 

Как известно, массив- это конечная совокупность данных одного типа. Можно говорить о массивах целых чисел, массивов символов и.т.д. Мы можем даже определить масссив, элементы которого - массивы( массив массивов), определяя, таким образм, многомерные массивы. Любой массив в программе должен быть описан: после имени массива добаляют квадратные скобки [],внутри которых обычно стоит число, показывающее количество элементов массива. Например, запись int x[10]; определяет x как массив из 10 целых чисел. В случае многомерных массивов показывают столько пар скобок , какова размерность массива, а число внутри скобок показывает размер массива по данному измерению. Например, описание двумерного массива выглядит так: int a[2][5];.Такое описание можно трактовать как матрицу из 2 строк и 5 столбцов. Для обрщения к некоторому элементу массива указывают его имя и индекс, заключенный в квадратные скобки(для многомерног массива - несколько индексов , заключенные в отдельные квадратные скобки): a[1][3], x[i] a[0][k+2].Индексы массива в Си всегда начинаются с 0, а не с 1, т.е. описание int x[5];порождает элементы x[0], x[1], x[2], x[3], x[4], x[5].Индекс может быть не только целой константой или целой переменной, но и любым выражением целого типа. Переменная с индексами в программе используется наравне с простой переменной (например, в операторе присваивания, в функциях ввода- вывода). Начальные значения массивам в языке Си могут быть присвоены при компиляции только в том случае, если они объявлены с классом памяти externили static, например:

static int a[6]={5,0,4,-17,49,1};

обеспечивает присвоения a[0]=5; a[1]=0; a[2]=4 ... a[5]=1.Как видите, для начального присвоения значений некоторому массиву надо в описании поместить справа от знака = список инициирующих значений, заключенные в фигурные скобки и разделенные запятыми. Двумерный массив можно инициировать так:

static int matr[2][5] = {{3,4,0,1,2},{6,5,1,4,9}};

Матрица хранится в памяти построчно, т.е. самый правый индекс в наборе индексов массива меняется наиболее быстро.

 

Пример

#include<stdio.h>

void main(void)

{//демонстрирует работу с одномерным массивом

 

int mas[]={2,3,1,8,0,3,5,6,8,9};

int temp;

printf("ne otsortirovannij massiv\n");

for(int i=0;i<10;i++)

printf("%d ",mas[i]);

 

temp;

for(int i=0;i<10;i++)

for(int j=0;j<10;j++)

if (mas[i]>mas[j]){

 

temp=mas[i];

mas[i]=mas[j];

mas[j]=temp;

}

 

printf("\n\notsortirovannij massiv\n");

 

for(int i=0;i<10;i++)

printf("%d ",mas[i]);

 

}

Результат работы программы

 

 

Указатели.

Указаетль - это переменная, которая содержит адрес некоторого объекта в памяти компьютера. Понятно, что адрес - целое число. Понимание и правильное использование указателей очень важно для создания хороших программ.

Многие конструкции языка Си требуют применения указателей. Например, указатели необходимы для успешного использования функций и динамического распределения памяти. С указателями следует обращаться очень осторожно. Так использование в программе неинициализированного указателя может привести к "зависанию" компьютера. При неправильном, неаккуратном использовании указателей в программе могут возникнуть ошибки, которые очень трудно бывает обнаружить. Обойтись же без указателей в программах на язке Си нельзя.

3. Объявление указателей в Си. Указатель объявляется следующим образом.

1. Вначале указывается тип указателя. Это некоторый тип языка Си. В данном случае он определяет тип объекта, на который указывает указатель.

2. Вслед за этим через пробел ставится звездочка - *. Она обозначает, что следующая за ней переменная является указателем.

Получается довольно простая формула:

тип *<простая переменная>

Например:

char *ch;

nt *temp, i, *j, *k;

loat *pt, fon;

Здесь указателями являются: ch, temp, j, k pt.








Дата добавления: 2016-04-14; просмотров: 845;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.