пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Массивы и указатели. Тип имени массива.

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

  Массивы объявляются так же, как и переменные. Например:
int a[100];
float c[10][20];
В первой строке объявляем массив а из 100 элементов целого типа: а[0],a[1], … ,a[99] (индексация всегда начинается с нуля). Во второй строке объявлен двумерный массив вещественного типа. Двумерный массив представляется как одномерный, элементы которого являются тоже массивами. В первых квадратных скобках указывается количество строк в массиве, во вторых – количество столбцов.
Указатели и одномерные массивы.
Указатель – это переменная, которая содержит адрес переменной. Так как указатель – это адрес некоторого объекта, то через него можно обращаться к данному объекту.
В СИ существует тесная связь между указателями и массивами. Любой доступ к элементу массива, осуществляемый операцией индексирования, может быть выполнен при помощи указателя.
Для передачи массива указателей в функцию используется тот же метод, что и для любого другого массива: имя массива без индекса записывается как формальный параметр функции.
Массивы указателей часто используются при работе со строками.

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

// заполнение элементов массива

int num[10];

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

  {

 *(num+i)=i; // обращение к элементу массива через указатель

  printf("%i\n",*(num+i));

  }

Прибавление к указателю целого числа приводит к смещению адреса, на который указывает указатель, на число позиций слагаемого.

2. Двумерный массив

// заполнение элементов массива

int num[3][3];

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

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

  {

*(*(num+i) +j)=i+j; (адрес)
// *(num[i]+j)=i+j; // num[i]- адрес начала i-той строки
   printf("%i;\n",*(*(num+i)+j));
  }

3. Использование дополнительного  указателя

  int num[3];

  int *p;

   p=num;// присвоение адреса начала массива указателю p

   for (int i=0; i<3;i++,p++) // используется операция “,”

                                          //адрес увеличивается на 4 байта

    {

     *p=i;// заполнение массива

      printf("%i;\n",*p);

        }

int arr[]={5,10,15,20,25}

int  *ptr=arr; // или ptr=&arr[0];

int a=ptr[3];

Имя массива – это адрес памяти, начиная с которого  расположен массив.


28.12.2014; 22:46
хиты: 142
рейтинг:0
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь