Форум программистов, компьютерный форум CyberForum.ru

memcpy/CopyMemory + 2-мерный динамический массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Возможно ли так ? http://www.cyberforum.ru/cpp-beginners/thread143516.html
Нужен ваш совет. Правилен ли следующий код, и корректен ли будет указатель на массив ? WORD* Index; Index = new WORD ; for (int i=0;i<=NumParticles;i++) { Index=i*4; Index=(i*4)+1;
C++ Прога для вывода кодовой таблицы cp866 #include <conio.h> #include <iostream.h> int main() { int i; cout<<"Code table(cp866):"<<endl; for(i=0;i<=255;i++) cout<<endl<<"code: "<<i<<"\t"<<"simbol: "<<(char)(i); http://www.cyberforum.ru/cpp-beginners/thread143501.html
C++ Программа работает не полностью.
В классе по кординатим прямоугольника определить периметр, площать и длину сторон, учесть что стороны могут меняться. #include <conio.h> #include <iostream.h> #include <math.h> class polynom { private:
Дайте содержательное определение операциям с последовательностью, стеком и очередью. C++
Дайте содержательное определение операциям с последовательностью, стеком и очередью. void F7(int k){ for (int i=0; SEQ!=0; i++); int c = SEQ; SEQ = SEQ; SEQ=c; } кому не трудно помогите пож-та!попадаю завтра!!!
C++ Игра на С++ http://www.cyberforum.ru/cpp-beginners/thread143485.html
Ну в общем нужна вам или нет, но всё равно выложу:) Это крестики-нолики. #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h>
C++ Исправьте ошибку Исправьте ошибку пожалуйста или подскажите где я допустил ошибку. Программа сортировки массива. вот код, а вот что оно мне выводит: вроде оно мне не показывает последний шаг сортировки и скопированный массив не хочет верно что то работать. #ifndef Mass1_h #define Mass1_h1 #include <iostream.h> #include <locale.h> #include<windows.h> #include <stdlib.h> #include <stdio.h> подробнее

Показать сообщение отдельно
Dulotanka
Сообщений: n/a
03.09.2010, 10:49     memcpy/CopyMemory + 2-мерный динамический массив
нужно 2-мерный массив создавать так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
float** Create(int x, int y)
{
    float **p = new BYTE[sizeof( float* ) * y + x * y * sizeof( float )]; //захватываем память под y указателей и x*y элементов
    if ( !p ) return p;
    p[0] = (float *)(p + y);                            //ставим 0 указатель на 0 строку массива
    for( int i = 1; i < y ; i++)
        p[i] = (float*)((BYTE*)p[i - 1] + sizeof( float ) * x * y);
    return p;
}
    //так создаются массивы
    float **p1 = Create( 5, 5 );
    float **p2 = Create( 5, 5 );
    //так пользуемся элементами массива
    for( int x = 0; x < 5 ; x++)
        for ( int y = 0; y < 5; y++)
             p1[x][y] = x + y * 5;
 
   //или так, результат эквивалентен
   for( int i = 0 ; i < 5 * 5 ; i++)
       p1[0][i] = i;                            //элементы расположны по порядку после (0;4) идет (1;0)
  //так копируем
   CopyMemory( p2[0] , p1[0] , 5 * 5 * sizeof( float ) );  //p1 - указывает на 0 указатель 0 строки, p1[0] - это указатель на 0 строку массива
за работу кода не отвечаю, но логика должна быть ясна
 
Текущее время: 10:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru