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

Массив: каким образом можно изменить размер многомерного массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввести x,y и в зависимости от того что введено - вывести 0 , 1 , или 2 http://www.cyberforum.ru/cpp-beginners/thread819289.html
Помогите сделать задачку...в зависимости какой будет х и y выводится на екран число. Я думал мб вот так, но не получается, выводит постоянно 1 и 2: #include <iostream.h> #include <conio.h> int main() { int x,y,c; cout<<"X: "; cin>>x;
C++ Создание дерева Возникли трудности при создании дерева. Ниже предоставил свои наработки, но как доделать не могу понять. Помогите разобраться. #include <stdio.h> #include <Windows.h> #include <time.h> /*Моя структура*/ struct tree { http://www.cyberforum.ru/cpp-beginners/thread819287.html
C++ Список. Дописать в начало элементы, которые входят в L1, но не входят в L2...
Cформировать список L из элементов, которые входят одновременно в списки L1 и L2. Дописать в начало элементы, которые входят в L1, но не входят в L2, а в конец - элементы, которые входят в L2, но не входят в L1
Открытие файлов через консоль C++
возможно ли открыть через консоль текстовый файл в формате док чтобы его содержимое не на консоль вывело а через ворд обычно открыло??
C++ загрузить в програму изображения формата jpg и получить доступ к каждому пискселю http://www.cyberforum.ru/cpp-beginners/thread819278.html
Весь вопрос в заголовке темы) надеюсь что подскажеет в какую сторну копать)
C++ ошибка в преобразованиях двумерного массива (для решения слау) Пишу прогу которая решает уравнение методом простых итераций,не дойдя собственно до самого метода обнаружил ошибку, при преобразовании матрицы по диагонали должны нули быть,но их почему то нет,в чем ошибка не могу понять,вроде формулы преобразования правильно записал,помогите пожалуйста,Прошу прощения за быдлокод #include <iostream> #include <conio.h> #define N 3 using namespace std; void... подробнее

Показать сообщение отдельно
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
27.03.2013, 20:02     Массив: каким образом можно изменить размер многомерного массива
kravam, двумерный массив в C\С++, имеет ту же структуру, что и одномерный, т.е. все элементы в нём расположены последовательно друг за другом. Проверить это можно с помощью следующего примера
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int main()
{
    const int m = 3;
    const int n = 4;
 
    int a[m][n] =
    {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9 ,10, 11, 12}
    };
 
    int* p = (int*) a;
 
    const int len = (m * n);
    for(int i = 0; i < len ; ++i)
        std::cout << p[i] << ' ';
    std::cout << '\n';
}
в двумерный он превращается с помощью простой формулы i * n + j
C++
1
2
3
4
5
6
7
8
9
for(int i = 0; i < m ; ++i)
{
    for(int j = 0; j < n ; ++j)
    {
        std::cout.width(4);
        std::cout << p[i * n + j];
    }
    std::cout << '\n';
}
Нельзя приводить имя массива, которое по сути является адресом его первого элемента, к указателю на указатель(типу предназначенному для хранение адресов других указателей), а затем пытаться его разыменовать.
C++
1
2
3
4
5
int a[m][n];
int* p1 = (int*) a;
int** p2 = (int**) a;
p1[0]; // Первый элемент массива
p2[0]; // Указатель, который в качестве адреса хранит значение первого элемента массива...
Думаю не нужно объяснять, что произойдёт, при попытке разыменования p2[0]
C++
1
p2[0][0]; // берём значение по адресу p2[0], в то время как "адрес", это число являющееся первым элементом массива(!)
 
Текущее время: 07:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru