50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
|
|||||||||||
1 | |||||||||||
Указатель на двумерный массив02.12.2011, 11:44. Показов 4928. Ответов 23
Метки нет (Все метки)
Допустим, у меня есть функция:
"невозможно преобразовать параметр 4 из 'float [100][100]' в 'float **'" Помогите разобраться, и скажите, как было бы правильно, пожалуйста.
0
|
02.12.2011, 11:44 | |
Ответы с готовыми решениями:
23
Указатель на двумерный массив Указатель на двумерный массив Указатель на двумерный массив Указатель на двумерный массив |
Кошковед
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
|
||||||
02.12.2011, 11:59 | 2 | |||||
создавать массив надо вот так:
1
|
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
|
|
02.12.2011, 12:45 [ТС] | 3 |
А как можно обьявить такой массив в начале программы (ведь есть цикл for) ?
0
|
Кошковед
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
|
||||||
02.12.2011, 12:49 | 4 | |||||
o_O ?
ну... берешь и объявляешь
0
|
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
|
||||||
02.12.2011, 12:51 | 5 | |||||
ТС наверно хотел сделать его глобальным
0
|
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
|
|
02.12.2011, 12:54 [ТС] | 6 |
Да, я хотел сделать его глобальным, и величины a*a
Как это сделать, пока что не увидел..?
0
|
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
|
|
02.12.2011, 12:55 | 7 |
сделайте глобальным указатель, а память уже выделяйте в main()
или передавайте в функцию статический массив как я показал
0
|
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
|
|
02.12.2011, 13:01 [ТС] | 8 |
Без кода, не пойму, простите...приведите пример, пожалуйста.
Более подробно обьясню. В .cpp файле задано число a и массив b[a][a]. Нужно, чтобы в файле .h функция A имела доступ к этому массиву..
0
|
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
|
|
02.12.2011, 13:10 | 9 |
число a - константа?
принимала его в качестве параметра?
0
|
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
|
|
02.12.2011, 13:11 [ТС] | 10 |
Да, и задается в .cpp файле.
Upd. Он пустой, заполнен нулями и обрабатывается в .h файле. То есть в принципе я мог бы его обьявить как раз в .h, но таких .h много, и в каждом создавать новый массив мучительно долго
0
|
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
|
|
02.12.2011, 13:40 [ТС] | 11 |
Почему удалено? Было неправильно написано? То есть тема еще открыта?
0
|
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
|
|
02.12.2011, 13:56 | 12 |
0
|
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
|
|
02.12.2011, 17:40 [ТС] | 13 |
А можно все таки пример, пожалуйста, или поподробнее?
Повторю вопрос: Как по заданному числу a, можно создать массив [a][a], чтобы функции в файлах .h и .cpp имели доступ к массиву, где лучше объявить этот массив? Пишу на VS8
0
|
Заблокирован
|
||||||
02.12.2011, 18:04 | 14 | |||||
Потому что это разные типы данных, о чем вам недвусмысленно говорит компилятор. Когда вы передаете свой массив в качестве аргумента функции, то преобразыется в указатель на свой первый элемент. А первым элементом двумерного массива является одномерный массив, соответствующий его строке. То есть при передаче вашего массива в качестве аргумента он преобразуется к типу float ( * )[100], который очевидно нре соответствует типу float **
Поэтому, чтобы у вас работала программа, объявите функцию следующим образом
0
|
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
|
|
02.12.2011, 20:21 [ТС] | 15 |
Спасибо, но мне это уже обьясняли...
Меня больше интересует Не по теме: Причем число a я считываю, вообще не имею понятия как в .h его засунуть =\ Или можно ли сделать так, чтобы функция была для массивов любых размеров? (поэтому и хотел сделать **b) Добавлено через 1 час 22 минуты Ап :cofee2:
0
|
Заблокирован
|
||||||||||||||||
02.12.2011, 20:28 | 16 | |||||||||||||||
Вы выделяете память следующим образом
0
|
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
|
|
02.12.2011, 20:41 [ТС] | 17 |
А есть способ обьявить этот массив в начале кода программы?
0
|
Заблокирован
|
|
02.12.2011, 20:48 | 18 |
Это не объявление массива. Это объявление указателя на указатель на float Сам массив в памяти вы организуете посредством выделения памяти. Поэтому эти операторы выделения памяти вы можете использовать в теле какой-нибудь функции, включая функцию main
0
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|||||||||||
02.12.2011, 20:52 | 19 | ||||||||||
Компилятор должен знать, на сколько делить массив (так как двумерный массив хранится в памяти как одномерный)
1-ый вариант
0
|
50 / 50 / 12
Регистрация: 22.05.2011
Сообщений: 326
|
|||||||||||
02.12.2011, 21:38 [ТС] | 20 | ||||||||||
Почему программа ругается на:
0
|
02.12.2011, 21:38 | |
02.12.2011, 21:38 | |
Помогаю со студенческими работами здесь
20
Указатель на двумерный массив Указатель на двумерный массив Указатель на двумерный массив указатель на двумерный массив Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |