Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многомерные массивы и указатели, Как получить адрес элемента массива 
V
    Опции темы
Fazil6
Дата 25.4.2007, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(Dov @  24.4.2007,  23:43 Найти цитируемый пост)
Ты хоть понимаешь, что ты здесь написал. Ты пытаешься указателю на указатель на инт присвоить адрес двумерного массива. То есть, грубо говоря, вместо int** ты ему подсовываешь int*** и хочешь, что бы это работало. Без приведения это работать не будет. Такому указателю ты можешь присвоить адрес указателя на подмассив массива, но не как не адрес самого массива. Например, ты можешь сделать так:

Мда... Вот это уже точно жесть.... Такого отвязного бреда еще небыло в этой ветке.... Ты же все время утверждал, что имя двумерного массива является int**... Теперь это у тебя 
Цитата(Dov @  24.4.2007,  23:43 Найти цитируемый пост)
адрес двумерного массива

Цитата(Dov @  24.4.2007,  23:43 Найти цитируемый пост)
То есть, грубо говоря, 

Цитата(Dov @  24.4.2007,  23:43 Найти цитируемый пост)
int***


ты уж определись какой бред тебе ближе.

Цитата(Dov @  24.4.2007,  23:43 Найти цитируемый пост)
Без приведения это работать не будет.

Жесть... С приведением это будет компиллироваться. Работать это никогда не будет. Именно поэтому ты и не докажешь никому ничего.

Цитата(Dov @  24.4.2007,  23:43 Найти цитируемый пост)
и хочешь, что бы это работало

и где я сказал, что хочу чтобы это работало? Я сказал, что по твоей теории это правильный код 

Цитата(Dov @  24.4.2007,  23:43 Найти цитируемый пост)
А самому что, никак не разобраться?    Посмотри тогда в одном из моих постов на 2-3 странице, как нужно описать указатель на двумерный массив, что бы он работал так, как ты хочешь.  

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

Цитата(Dov @  24.4.2007,  23:43 Найти цитируемый пост)
то это значит.2. Значением указателя р будет выражение &var, то есть адрес переменной var.3. Значение по этому адресу можно получить разыменовав указатель р.4.Доказательством того, что р является указателем служит тот факт, что переменной var2 было присвоено значение 5, которое хранится в ячейке памяти, на которую указывает р, то есть значение переменной var.5. Разыменование указателя р, то есть получение значения с той ячейки памяти, на которую он указывает это доказательство того, что р это указатель на int. 6. Поскольку рр содержит адрес указателя р, который является указателем на int, то это доказательтство того, что рр является указателем на указатель на int. 7. Разыменование указателя рр, то есть получение значения с той ячейки памяти, на которую он указывает это доказательство того, что рр это указатель на указатель на int. 8. Если значение переменной var3 равно значению var, то это доказательство того, что рр это укзатеть на указатель на int, поскольку через указатель рр мы получили значение ячейки, на которую указывает указатель р, являющийся указателем на int.9. Таким образом выражение var3 = *(*рр) это доказательство того, что рр это указатель на указатель на int. Я хочу знать кто с чем не согласен.

воттолько причем здесь массивы и их имена?  smile 

Цитата(apook @  25.4.2007,  03:54 Найти цитируемый пост)
не имя может использоваться как указатель, а указатель можетиспользоваться в качестве имени, а имя не есть указатель, асодержит адрес первого элемента массива.

эх, зря ты это написал...

Добавлено через 1 минуту и 36 секунд
Цитата(Kipter @  25.4.2007,  08:44 Найти цитируемый пост)
Он понимает как это работает и саму суть.... только с теорией плохо....

похоже, нихрена он не понимает...
PM MAIL   Вверх
bel_nikita
Дата 25.4.2007, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Dov,
Цитата(Dov @ 24.4.2007,  22:43)
Цитата(Daevaorn @  24.4.2007,  17:34 Найти цитируемый пост)
Dov, жесть. Чушь несешь полную. Почитай перед сном стандарт. Должно вылечить.
 Слушаюсь, товарищ майор. Разрешите выполнять?

Я сказал, что имя двумерного целочисленного массива имеет тип указатель на указатель на инт. Именно эти мои слова считают здесь чушью и бредом.

Не съезжай всторону. Чушью и бредом считают твой приведенный код. Вот, некоторый фрагмент:
Код
int main()
{
    int p[3][3];
    int** pAr = (int**)p; 
    *(int*)pAr = 6;
    *((int*)pAr + 1) = 8;
    cout << *((int*)pAr + 1) << endl;
    return 0;
}


Dov, почитал твои посты... И скажу твоими же цитатами: 
Цитата(Dov @ 21.4.2007, 13:05)
1. Обосновать своё утверждение и доказать свою правоту, тогда получишь +1 в репу.
2. Не обосновывать и ничего не доказывать, тогда получишь -1 в репу за необоснованый наезд.
3. Ивиниться за необоснованый наезд, тогда не получишь ничего. 
Желаю удачи.  smile  
Ответь сам себе на свои же наезды smile 

З.Ы.: 
Цитата(Dov @ 21.4.2007, 13:22)
Я тебя не пугаю, а учу правилам хорошего тона. Ты должен уметь отвечать за свой базар.




--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Fazil6
Дата 25.4.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(bel_nikita @  25.4.2007,  09:58 Найти цитируемый пост)
Не съезжай всторону. Чушью и бредом считают твой приведенный код.

те слова тоже бред и чушь
PM MAIL   Вверх
dizzy1984
Дата 25.4.2007, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 15.2.2007

Репутация: 3
Всего: 25



А что интересно так, когда скучно становится всегда знаешь что почитать...  smile 
PM MAIL   Вверх
FiMa1
Дата 25.4.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Программа динамического размещения трехмерного массива. Вываливается Debug Assertion Failed при "освобождении памяти, выделенной под указатели на столбцы одномерных массивов" (сорри за корявый коммент).
Не пойму что не так делаю, поправьте, меня плз...

Код

#include <iostream>
#include <iomanip>
using namespace std;

int main(void)
{    
    int str = 3, row = 3, tdim = 3;
    double ***a;
    int i, j, k;

    /* ВЫДЕЛЕНИЕ ПАМЯТИ ДЛЯ МАТРИЦЫ */
    // резервирование памяти под указатели на строки матрицы
    a = new double**[str];
    
    // резервирование памяти под указатели на столбцы одномерных массивов
    for( i = 0; i < str * row; i++ )
        *(a + i) = new double*[row];
    
        // резервирование памяти под фактические данные матрицы
        for( i = 0; i < str * row; i++ )
            **(a + i)  = new double[row];//или *a[i] = ...

        /* ИНИЦИАЛИЗАЦИЯ МАТРИЦЫ */
        for( i = 0; i < str; i++ )
            for( j = 0; j < row; j++ )
                for( k = 0; k < tdim; k++ )
                    ***(a + i + j + k ) = rand() % 100;

        /* ПЕЧАТЬ МАТРИЦЫ */
        for( i = 0; i < str; i++)
        {
            for( j = 0; j < row; j++ )
                for( k = 0; k < tdim; k++ )
                    cout << setw(4) << ***(a + i + j + k );
                cout << endl;
            cout << endl;
        }

        /* ОСВОБОЖДЕНИЕ ПАМЯТИ, ВЫДЕЛЕННОЙ ДЛЯ МАТРИЦЫ */
        for( i = 0; i < str * row; i++ )
        // освобождение памяти, выделенной под фактические данные матрицы
            delete[] **(a + i);

        for( i = 0; i < str; i++ )
        // освобождение памяти, выделенной под указатели на столбцы одномерных массивов
            delete[] *(a + i);

        // освобождение памяти, выделенной под указатели на строки матрицы
        delete[] a;

    return 0;
}


Это сообщение отредактировал(а) FiMa1 - 25.4.2007, 14:42
PM   Вверх
JackYF
Дата 25.4.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(FiMa1 @  25.4.2007,  14:41 Найти цитируемый пост)
Не пойму что не так делаю, поправьте, меня плз...




Цитата(FiMa1 @  25.4.2007,  14:41 Найти цитируемый пост)
 for( i = 0; i < str * row; i++ )
            **(a + i)  = new double[row];//или *a[i] = ...


Вот тут неверно. Инициализация делается отдельными тремя циклами. Надо так:

Код

 a = new double**[str];
    
    // резервирование памяти под указатели на столбцы одномерных массивов
    for( i = 0; i < str; i++ )
        a[i] = new double*[row];
    
        // резервирование памяти под фактические данные матрицы
        for( i = 0; i < str; i++ )
          for( j = 0; j < row; ++j )
            a[i][j]  = new double;



Это сообщение отредактировал(а) JackYF - 25.4.2007, 15:08


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Anikmar
Дата 25.4.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



JackYF,  я не уверен, что вы правильно подсказали.
У вас по-моему память под строки не выделяется.
Мой вариант:
Код

void main(void )
{
    int Size0 = 5;
    int Size1 = 5;
    int Size2 = 5;
    double ***aMas;
    int i,j,k;

    // Создание массива
    aMas = new double**[Size0];
    for (i=0;i<Size0;i++)
    {
        aMas[i] = new double* [Size1];
        for(j=0;j<Size1;j++)
            aMas[i][j] = new double[Size2];
    }

    // Заполнение элементами
    for (i=0;i<Size0;i++)
        for(j=0;j<Size1;j++)
            for(k=0;k<Size2;k++)
                aMas[i][j][k] = rand() % 100;

    // Вывод на экран
    for (i=0;i<Size0;i++)
        for(j=0;j<Size1;j++)
        {
            cout << endl;
            for(k=0;k<Size2;k++)
                cout << "[" << i << "][" << j << "][" << k << "]=" << aMas[i][j][k] << " ";
        }

    // Удаление
    for (i=0;i<Size0;i++)
    {
        for(j=0;j<Size1;j++)
            delete [] aMas[i][j];
        delete [] aMas[i];
    }
    delete [] aMas;

    getch();
}



Добавлено через 39 секунд
Правда мой вывод отличается от того, что надо, ну и размеры 5.5.5 можно другие поставить
PM MAIL ICQ   Вверх
FiMa1
Дата 25.4.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(JackYF @ 25.4.2007,  15:07)
Надо так:
Код

 a = new double**[str];
    
    // резервирование памяти под указатели на столбцы одномерных массивов
    for( i = 0; i < str; i++ )
        a[i] = new double*[row];
    
        // резервирование памяти под фактические данные матрицы
        for( i = 0; i < str; i++ )
          for( j = 0; j < row; ++j )
            a[i][j]  = new double;

Соответственно пишу:
Код

#include <iostream>
#include <iomanip>
using namespace std;

int main(void)
{    
    int str = 3, row = 3, tdim = 3;
    double ***a;
    int i, j, k;

    /* ВЫДЕЛЕНИЕ ПАМЯТИ ДЛЯ МАТРИЦЫ */
    // резервирование памяти под указатели на строки матрицы
    a = new double**[str];

    // резервирование памяти под указатели на столбцы одномерных массивов
    for( i = 0; i < str * row; i++ )
        *(a + i) = new double*[row];

    // резервирование памяти под фактические данные матрицы
    for( i = 0; i < str; i++ )
        for( j = 0; j < row; ++j )
            a[i][j]  = new double;
    
    /* ИНИЦИАЛИЗАЦИЯ МАТРИЦЫ */
    for( i = 0; i < str; i++ )
        for( j = 0; j < row; j++ )
            for( k = 0; k < tdim; k++ )
                ***(a + i + j + k ) = rand() % 100;

    /* ПЕЧАТЬ МАТРИЦЫ */
    for( i = 0; i < str; i++)
    {
        for( j = 0; j < row; j++ )
            for( k = 0; k < tdim; k++ )
                cout << setw(4) << ***(a + i + j + k );
            cout << endl;
        cout << endl;
    }

    /* ОСВОБОЖДЕНИЕ ПАМЯТИ, ВЫДЕЛЕННОЙ ДЛЯ МАТРИЦЫ */
    for( i = 0; i < str * row; i++ )
        // освобождение памяти, выделенной под фактические данные матрицы
        delete[] **(a + i);

    for( i = 0; i < str; i++ )
        // освобождение памяти, выделенной под указатели на столбцы одномерных массивов
        delete[] *(a + i);

    // освобождение памяти, выделенной под указатели на строки матрицы
    delete[] a;

    return 0;
}

Unhandled exception... Access violation writing location... при инициализации  в строке  smile 
Код

***(a + i + j + k ) = rand() % 100;

PM   Вверх
apook
Дата 25.4.2007, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



бросай указатели
Код

#include <iostream>
#include <iomanip>
//#include <stdlib.h>

using namespace std;

int main(void)
{    
    int str=3, tdim=3,   all=3, col=3, row=3;
    double ***a;
    int i, j, k;

    /* ВЫДЕЛЕНИЕ ПАМЯТИ ДЛЯ МАТРИЦЫ */
    // резервирование памяти под указатели на строки матрицы
    a=new double**[ all ];
    
    // резервирование памяти под указатели на столбцы одномерных массивов
    for( i=0; i<col; i++ )
    {
        a[ i ] = new double*[ col];

        for( j=0; j<row; j++ )
            a[ i ][ j ]=new double[ row ]; 
        }

        /* ИНИЦИАЛИЗАЦИЯ МАТРИЦЫ */
        for( k=0; k<all; k++ )
            for( i=0; i<col; i++ )
                for( j = 0; j<row; j++ )
                    a[ k ][ i ][ j ]=rand() % 100;

        /* ПЕЧАТЬ МАТРИЦЫ */
        for( k=0; k<all; k++ )
        {
            for( i=0; i<col; i++ )
            {
                for( j=0; j<row; j++ )
                    cout << setw(4) << a[ k ][ i ][ j ];
                cout << endl;
                }
            cout << endl;
            }


// ОСВОБОЖДЕНИЕ ПАМЯТИ, ВЫДЕЛЕННОЙ ДЛЯ МАТРИЦЫ

for( i=0; i<all; i++ )
{
    for( j=0; j<col; j++ )
        delete [] a[ i ][ j ];
    delete [] a[ i ];
    }
delete[] a;

return 0;
}



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
JackYF
Дата 25.4.2007, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(FiMa1 @  25.4.2007,  15:21 Найти цитируемый пост)
***(a + i + j + k ) = rand() % 100;

Так нельзя!

a[i][j][k] !=***(a + i + j + k ) 

Так что действительно бросай использовать указательную арифметику там, где она не нужна.

Добавлено через 2 минуты и 38 секунд
Цитата(Anikmar @  25.4.2007,  15:20 Найти цитируемый пост)
// Создание массива
    aMas = new double**[Size0];
    for (i=0;i<Size0;i++)
    {
        aMas[i] = new double* [Size1];
        for(j=0;j<Size1;j++)
            aMas[i][j] = new double[Size2];
    }


Чем отличается от моего варианта? Правда, у меня только создание, остальное тоже надо править.
Если ты имел в виду, что я не написал исправления остального кода, тогда да.






--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Partizan
Дата 25.4.2007, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



Даааа ) Прочёл весь топик от начала до конца )
Интересные вещи начитал ) и даже несколько утверждений себе на заметку взял)
Истина рождаеццо в споре, как говорят)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Anikmar
Дата 26.4.2007, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



JackYF, 
Ваш код:
Код

 a = new double**[str]; 

 Это мы выделили память под str двухмерных массивов
Код

    // резервирование памяти под указатели на столбцы одномерных массивов
    for( i = 0; i < str; i++ )
        a[i] = new double*[row];

Это мы выделили память под массив указателей на строки двумерного массива (создали столбец) - Или создали строку с указаетлями на столбцы (как кто рассматривает)
Код

        // резервирование памяти под фактические данные матрицы
        for( i = 0; i < str; i++ )
          for( j = 0; j < row; ++j )
            a[i][j]  = new double;

А вот дальше я не понял. У нас есть только указатели. И сы создаем по одному элементу. А где используется третья размерность? В примере она tdim. Я ее не увидел. Получается по 3-му измерению у вас создается только 1 элемент. 

Цитата(JackYF @  25.4.2007,  16:42 Найти цитируемый пост)
Чем отличается от моего варианта? 

У меня эта часть сделана так:
Код

        aMas[i] = new double* [Size1];
        for(j=0;j<Size1;j++)
            aMas[i][j] = new double[Size2];

Третье измерение - у меня Size2. 

Это сообщение отредактировал(а) Anikmar - 26.4.2007, 09:05
PM MAIL ICQ   Вверх
FiMa1
Дата 26.4.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(JackYF @ 25.4.2007,  16:42)
Цитата(FiMa1 @  25.4.2007,  15:21 Найти цитируемый пост)
***(a + i + j + k ) = rand() % 100;

Так нельзя!
a[i][j][k] !=***(a + i + j + k )
Так что действительно бросай использовать указательную арифметику там, где она не нужна.

Всем привет!

Друзья, торжественно клянусь никогда не использовать (да и не собирался) указательную арифметику для подобного запутывания кода! Однако, следует заметить, что данной код писался исключительно в целях изучения процедур доступа к i-му элементу многомерного массива посредством указателей (с этим у меня затруднения).
Посему, пожалуйста, ответьте на следующие мои вопросы:
Есть массив int array[i][j][k];
1. Как ПОСРЕДСТВОМ УКАЗАТЕЛЕЙ записать в элемент [0][1][2] массива array значение, к примеру, 100?
2. Как ПОСРЕДСТВОМ УКАЗАТЕЛЕЙ прочитать значение элемента [0][1][2] массива array?

Отдельное СПАСИБО тому, кто отважится закрепить ответы написанием программы динамического размещения массива array[][][] ПОСРЕДСТВОМ УКАЗАТЕЛЕЙ и его инициализации ПОСРЕДСТВОМ УКАЗАТЕЛЕЙ (не забудьте удалить массив ;).

PS: Думаю, это можно будет считать хорошим логическим завершением теоритических изысканий топика.
PM   Вверх
Anikmar
Дата 26.4.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(FiMa1 @  26.4.2007,  11:58 Найти цитируемый пост)
Отдельное СПАСИБО тому, кто отважится закрепить ответы написанием программы динамического размещения массива array[][][] ПОСРЕДСТВОМ УКАЗАТЕЛЕЙ и его инициализации ПОСРЕДСТВОМ УКАЗАТЕЛЕЙ (не забудьте удалить массив ;).


Не понял. Мой пример и создает и выводит и удаляет - и все только через указатели. Чем не устраивает?

Цитата(FiMa1 @  26.4.2007,  11:58 Найти цитируемый пост)
1. Как ПОСРЕДСТВОМ УКАЗАТЕЛЕЙ записать в элемент [0][1][2] массива array значение, к примеру, 100?

Код

// Объявляем массив
int ***p;

// Выделяем под него память (см. выше)

// Присваиваем значение
p[0][1][2] = 20;

// Удаляем массив (см. выше)


PM MAIL ICQ   Вверх
FiMa1
Дата 26.4.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(Anikmar @ 26.4.2007,  12:56)
Не понял. Мой пример и создает и выводит и удаляет - и все только через указатели. Чем не устраивает?
Цитата(FiMa1 @  26.4.2007,  11:58 Найти цитируемый пост)
1. Как ПОСРЕДСТВОМ УКАЗАТЕЛЕЙ записать в элемент [0][1][2] массива array значение, к примеру, 100?

Код

// Объявляем массив
int ***p;
// Выделяем под него память (см. выше)
// Присваиваем значение
p[0][1][2] = 20;
// Удаляем массив (см. выше)

Да через указатели, но не "явно"...
Пусть есть одномерный массив int a[3]; тогда доступ к третьему (фактически второму, нумерация с нуля) элементу массива при явной записи с использованием указателей будет выглядеть как:
Код
int main(void)
{
    int a[3] = { 0, 1, 2 };

    //получаем третий эл-т с ПОМОЩЬЮ УКАЗАТЕЛЕЙ
    int thirdElem = *(a + 2);//thirdElem = 2
    //или явно, БЕЗ указателей
    thirdElem = a[2];
}

Как проделать тоже самое с трехмерным массивом array[][][] ?

Добавлено @ 13:30
Цитата(FiMa1 @ 26.4.2007,  13:19)
Как проделать тоже самое с трехмерным массивом array[][][] ?

Народ, так что ли правильно?

Код

int main(void)
{
    int a[3][3][3] = { { { 111, 112, 113 }, { 121, 122, 123 }, { 131, 132, 133 } },
                       { { 211, 212, 213 }, { 221, 222, 223 }, { 231, 232, 233 } },
                       { { 311, 312, 313 }, { 321, 322, 323 }, { 331, 332, 333 } } };

    int thirdElem = *(*(*(a + 0) + 1) + 2);
}


Это сообщение отредактировал(а) FiMa1 - 26.4.2007, 13:31
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0682 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.