Вопрос по С++

dragonion

Добрый дракон
Re: C#

Ммда! Короче чувствую, что после Delphi я все-таки перейду скорее на С++, который и в Линуксе предусмотрен. :) Будет видно!
 

daoway

кот Шрёдингера
Re: C#

Ммда! Короче чувствую, что после Delphi я все-таки перейду скорее на С++, который и в Линуксе предусмотрен. :) Будет видно!
dragonion, забудь Delphi и спокойно долби C#. У меня есть чем огорчить твоего препода - больше всего С# похож на Java (как идеология так и сам язык), но тооолько не на паскаль !! Если нет желания заниматься системным программазмом, С++ не актуален. "Зачем платить больше" (с)

А насчёт переносимости - наилучшая переносимость у Java. Бинари полученный в винде (с потоками, графикой и прочей ерундой) спокойно работает в JVM под линукс или соларис (это проверено, другие платформы по причине эксклюзивности оных не пробовал). Та же идея и в дот нет. Да только мое ИМХО - сомневаюсь что Mono достигнет 100% точной реализации фреймворка и тучи библиотек, хотя как знать...
 

quant

yeah
Відповідь: Вопрос по С++

каким образом я могу работать с массивом измерности > 1 который передан по ссылке в процедуру?
с одномерным примерно так
Код:
void fillarray (int* cellpoint, int cellcount) {
  do {
    *(cellpoint++) = cellcount--;
  } while (cellcount);
}

void main (){
  int cellcount = 5;
  int arr[cellcount];
  fillarray (&arr[0], cellcount);
}
а вот как с двухмерным...
 

Reader

желаю знать :)
Герберт Шилд. Программирование на Borland C++. Глава 5. Массивы.
При передаче многомерных массивов функции следует определить все размерности, кроме самой левой. Например, если массив m определён как
Код:
int m [4] [3] [6] [5];
то функция func1(), получающая m, может выглядеть следующим образом:
Код:
int func1(int d[][3][6][5]);
{
.
.
}
Конечно, можно свободно включить и левую размерность, если так нравится.
 

quant

yeah
Відповідь: Вопрос по С++

да но это передача всего массива, тоесть создание его копии
вот в примере с 4 мерным массивом размер массива 4 * 3 * 6 * 5 * [размер int] = 360 * [размер int]
а в примере который я написал я обьявляю указатель на массив - который будет изменять непосредственно массив который передаётся и размер указателя вродебы 2 * [размер int]
я когдато в политехе у когото видел эту реализацию но я её не смог понять - там как то хитро передавалась ссылка на ссылку ( int** ) :)
 

Reader

желаю знать :)
Массивы передаются ТОЛЬКО по ссылке. Они не копируются в памяти.
Попробуй создать массив в функции main, модифицировать его в функции fillarray и после возврата вывести его содержимое из функции main. Он будет модифицирован.
 

Reader

желаю знать :)
Другое дело, когда нужно работать N-мерными рассивами разных размеров. Тогда нужно передавать и ссылку на массив и его размеры. См. пример.
Код:
#include <stdio.h>

void nullArray(int *arr, int x, int y)
{
        int i;

        for (i=0; i<x*y; i++)
                arr[i]*=0;
};

void printArray(int *arr, int x, int y)
{
        int i;

        for (i=0; i<x*y; i++)
                printf("%d ", arr[i]);
}
int main(void)
{
        int MyArr[5][8];

        //печатаем мусор, который был в памяти
        printArray( &MyArr[0][0], 5, 8);
        //обнуляем массив
        nullArray( &MyArr[0][0], 5, 8);
        //проверяем обнуление
        printArray( &MyArr[0][0], 5, 8);
        return 0;
}
 

Vano

New Member
Re: C#

Дайте ссылку на C#!
Что вы подразумеваете под C#?
Если учебник или компилятор то читайте мой пост немного выше:
Кому интересно тут есть учебник по C# на русском языке и там же его компилятор SharpDevelop версии 2.0 .
 
Зверху