Функции и многомерные массивы

Функции и многомерные массивы

     Предположим, что вы хотите иметь функцию, работающую с двумерным массивом, причем со всем целиком, а не с частями. Как вы запишите определения функции и ее описания? Подойдем к этому более конкретно и скажем, что нам нужна функция, управляющая массивом junk[ ][ ] в нашем последнем примере. Пусть функция main( ) выглядит так:

/* junk в main */

main( )

{

static int junk[3][4] = {

{2, 4, 5, 8},

{100, 200, 300, 400}

{10, 40, 60, 90} };

stuff(junk);

}

Функция stuff( ) использует в качестве аргумента junk, являющийся указателем на весь массив. Как написать заголовок функции, не зная, что делает stuff( )?

Попробуем написать:

stuff(junk) int junk[ ];

или

stuff(junk) int junk[ ][ ];

Нет и нет. Первые два оператора еще будут работать некоторым образом, но они рассматривают junk как одномерный массив, состоящий из 12 элементов. Информация о расчленении массива на строки отсутствует.

     Вторая попытка ошибочна, потому что хотя оператор и указывает что junk является двумерным массивом, но нигде не говорится, из чего он состоит. Из шести строк и двух столбцов? Из двух строк и шести столбцов? Или из чего-нибудь еще? Компилятору недостаточно этой информации. Ее дают следующие операторы:

stuff(junk)

int junk[ ][4];

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

char *list[  ];

Символьные строки представляют одно из наиболее частых применений массивов и указателей; мы вернемся к этой теме в гл. 13.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

R.8.2.4 Массивы

Из книги Справочное руководство по C++ автора Страустрап Бьярн

R.8.2.4 Массивы В описании T D, в котором D имеет видD1 [ выражение-константа opt ]описывается идентификатор типа "… массив T". Если выражение-константа присутствует (§R.5.19), то оно должно иметь целочисленный тип и значение, большее 0. Это выражение задает число элементов массива.


Многомерные базы данных (MDD)

Из книги Основы AS/400 автора Солтис Фрэнк

Многомерные базы данных (MDD) Реляционные базы данных организованы в виде двумерных таблиц. В MDD имеется одно или несколько дополнительных измерений. Например, Вам надо оценить свои доходы от продаж, рассмотрев в отдельности сводки по товарам, по регионам и по времени. В


Массивы 

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович


8.1.11. Многомерные массивы

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

8.1.11. Многомерные массивы Если для численного анализа вам нужны многомерные массивы, то в архиве приложений Ruby есть прекрасная библиотека NArray, которую написал Масахиро Танака (Masahiro Tanaka). Если необходим аппарат для работы с матрицами, обратитесь к стандартной библиотеке


Массивы

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

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


Массивы

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

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


Многомерные массивы

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Многомерные массивы Firebird поддерживает многомерные массивы размерностью от 1 до 16. Например, следующий оператор определяет три столбца целочисленных массивов с двумя, тремя и четырьмя размерностями:CREATE TABLE BTABLE (/* хранит 4 строки по 5 элементов = 20 элементов */ARR_INT2 INTEGER[4,5],/* 6


ФУНКЦИИ, МАССИВЫ И УКАЗАТЕЛИ

Из книги Язык Си - руководство для начинающих автора Прата Стивен

ФУНКЦИИ, МАССИВЫ И УКАЗАТЕЛИ      Массивы можно использовать в программе двояко. Во-первых, их можно описать в теле функции. Во-вторых, они могут быть аргументами функции. Вес, что было сказано в этой главе о массивах, относится к первому их применению; теперь рассмотрим


МНОГОМЕРНЫЕ МАССИВЫ

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

МНОГОМЕРНЫЕ МАССИВЫ      Темпест Клауд, метеоролог, занимающаяся явлением перисто-сти облаков, хочет проанализировать данные о ежемесячном количестве осадков на протяжении пяти лет. В самом начале она должна решить, как представлять данные. Можно использовать 60


УКАЗАТЕЛИ И МНОГОМЕРНЫЕ МАССИВЫ

Из книги C++ для начинающих автора Липпман Стенли

УКАЗАТЕЛИ И МНОГОМЕРНЫЕ МАССИВЫ      Как создать указатели для многомерных массивов? Чтобы найти ответ на этот вопрос, рассмотрим несколько примеров. Предположим, что у нас есть описания int zippo[4][2];  /* массив типа int                 из 4 строк и 2 столбцов */int *pri;    /*


9.2.15. Массивы

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин


3.9.1. Многомерные массивы

Из книги автора

3.9.1. Многомерные массивы В С++ есть возможность использовать многомерные массивы, при объявлении которых необходимо указать правую границу каждого измерения в отдельных квадратных скобках. Вот определение двумерного массива:int ia[ 4 ][ 3 ];Первая величина (4) задает


7.9.4. Массивы указателей на функции

Из книги автора

7.9.4. Массивы указателей на функции Можно объявить массив указателей на функции. Например:int (*testCases[10])();testCases – это массив из десяти элементов, каждый из которых является указателем на функцию, возвращающую значение типа int и не имеющую параметров.Подобные объявления


Массивы

Из книги автора

Массивы Массивы в С++ объявляются с указанием количества элементов массива в квадратных скобках после имени переменной массива. Допускаются двумерные массивы, т.е. массив массивов. Ниже приводится определение одномерного массива, содержащего 10 элементов типа int:int