8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
|
|
1 | |
Как найти размерность в массиве С10.07.2009, 19:47. Показов 3028. Ответов 18
Метки нет (Все метки)
0
|
10.07.2009, 19:47 | |
Ответы с готовыми решениями:
18
Как изменять размерность в многомерном массиве Найти в исходном массиве элементы кратные пяти, сформировать из них новый массив и определить его размерность Как узнать размерность внутреннего вектора в массиве List<List<Double>>? Как найти базис и размерность векторного пространства |
Отдыхающий:)
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
|
|
10.07.2009, 19:58 | 2 |
Во первых, "sezeof(a)/sizeof(a[0])" <-- это не правильно!!!
Этим вы узнаёте только размер одного элемента! int a[n][m],s; //Размер s = sizeof(a)*n*m;
0
|
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
|
|
10.07.2009, 20:03 [ТС] | 3 |
sezeof(a)/sizeof(a[0])-всегда работало, но я могу ошибаться
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
10.07.2009, 20:09 | 4 |
Ты о чем вообще? Это классический способ получения размера статического массива. sizeof(a) - размер всего массива в байтах, sizeof(a[0]) - размер первого элемента (одного). sizeof(a)/sizeof(a[0]) получается размер всего массива делим на размер одного элемента и получаем что? Естественно размер (количество элементов) массива.
Ты не ошибаешься.
1
|
Отдыхающий:)
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
|
|
10.07.2009, 20:14 | 5 |
извините, но у меня этот способ не работает
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
||||||
10.07.2009, 20:15 | 6 | |||||
Например, так:
0
|
Отдыхающий:)
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
|
|
10.07.2009, 20:16 | 7 |
пере компилировал, извините , но всё заработало
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
10.07.2009, 20:16 | 8 |
Если ты выделяешь память динамически, то и не будет работать. Этот способ работает для статических массивов.
0
|
Отдыхающий:)
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
|
|
10.07.2009, 20:17 | 9 |
У меня в другом проблема была, мне компилятор на:
int a[10][10]; sizeof(a) выдавал 4 потом это ещё раз скомпилировал, всё нормально
0
|
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
|
|
10.07.2009, 20:19 [ТС] | 10 |
Что значит статистический, а что динамический?
Добавлено через 32 секунды Так тоже можно? //Размер s = sizeof(a)*n*m; Добавлено через 1 минуту 2 секунды А как записать массив н-р с n ,если n узнаешь тока в конце?
0
|
Отдыхающий:)
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
|
|
10.07.2009, 20:22 | 11 |
статистический - это когда память выделенная под переменную не можеть быть изменена программистом, а динамический - когда программист может сам управлять памятью выделяемой под переменную
Добавлено через 2 минуты 14 секунд Для двумерного, если вам надо узнать сколько переменных находится в масиве: n*m
0
|
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
|
|
10.07.2009, 20:22 [ТС] | 12 |
Как задается динамически?
0
|
Отдыхающий:)
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
|
|
10.07.2009, 20:24 | 13 |
а если через sizeof:
sizeof(a)/sizeof(a[0][0])/sizeof(a[0][0])
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
||||||||||||||||
10.07.2009, 20:24 | 14 | |||||||||||||||
Динамический массив - массив память под который выделена явно с помощью new или malloc, например
Если количество строк и столбцов - я выше писал как это сделать в посте #6. Если общее количество элементов то также как и для одномерного:
1
|
Отдыхающий:)
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
|
|
10.07.2009, 20:26 | 15 |
извините не скинул
Добавлено через 1 минуту 19 секунд sшzeof(a)/sizeof(a[0][0]), вот так
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
10.07.2009, 20:27 | 16 |
А если код не находится внутри функции, то память будет зарезервирована в сегменте статических данных и попутно массив будет заполнен нулями.
0
|
8 / 8 / 2
Регистрация: 10.07.2009
Сообщений: 206
|
|
10.07.2009, 20:29 [ТС] | 17 |
0
|
28 / 28 / 6
Регистрация: 25.12.2008
Сообщений: 186
|
|
11.07.2009, 00:29 | 18 |
Статический - означает что его размер однозначно задан числом.
Динамический - память выделяется по ходу выполнения... (удобно если не знаеш количество елементов в нем)
0
|
11.07.2009, 08:36 | 19 |
Статический массив: int a[5];
Динамический: int *a = malloc (...); по языку это НЕ массив, а указатель, а потому sizeof от него взять нельзя VLA (variable length array): int a[n]; - здесь конструкция sizeof работает, хотя на самом деле это скорее runtime sizeof. При этом, если ПОСЛЕ задания массива изменить значение переменной n, а потом взять sizeof - всё равно будет работать. В gcc по крайней мере этот момент реализован
0
|
11.07.2009, 08:36 | |
11.07.2009, 08:36 | |
Помогаю со студенческими работами здесь
19
Как найти max элемент в двумерном массиве, и как найти min элемент в одномерном массиве? Вычислить размерность и базис суммы и размерность пересечения подпространств Найти размерность и базис Найти базис и размерность Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |