Вопрос по массивам. C++

программирование C++

Сорри за возможно глупые вопросы. Допустим есть следующий код:
int yf[2][15];
yf[2][15] =56;
Label1->Caption=yf[2][15];
Значение в этом случае показывается, но вылазит ошибка Access violation at address............... Как исправить?
--------------------------
И второй вопрос: Как присвоить переменной значение из массива.
int yf[2][15];
yf[2][15]=56;
int nnn=yf[2][15];
Таким образом присваевается я так понял адресс(большое число), а нужно именно значение.
Ответы:
Ну там как бы это...
Если массив до [2][15], то крайний адрес [1][14]... Агаа...
int yf[2][15]; //Создается массив 2х15 (0,1 х 0,1,...,13,14)
yf[2][15] =56; //Берется элемент за пределами массива.
Массивы в C++ нумеруются с 0. Т.е. если объявить массив
int array[3];
то его элементами будут array[0], array[1], array[2], но не array[3].
По поводу второго вопроса.
Чтобы понять смысл этой записи — int value = int_array[2][15]; — нужно знать о двух вещах и понимать их.
1. Массив, объявленный как "int int_array[2][15];", являет собой некую переменную "int_array", которая в опредлённых условиях (расписать не буду) автоматически преобразуется в указатель на указатель (т.е. "int **int_array;" (тут, конечно, я соврал, на самом деле всё гораздо неприятнее (указатель на массив), но чисто технически я сказал правду)), а это значит, что сама по себе переменная int_array (идентификатор массива) хранит в себе адрес расположения массива, т.е. по сути является указателем, но в терминах С++ переменная int_array будет считаться объектом массива (именно поэтому на x386, например, sizeof(int_array) выдаст 120).
2. Квадратные скобки ([ ]) или оператор индексирования выполняет всего две задачи: производит арифметику над указателем (или адресом объекта) и разыменовывает указатель (или адрес), т.е. извлекает значение по вычисленному адресу.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.