С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
voff4igg
0 / 0 / 0
Регистрация: 15.02.2009
Сообщений: 11
#1

Как вычислить количество элементов массива, переданного по ссылке? - C++

15.02.2009, 04:25. Просмотров 1534. Ответов 7
Метки нет (Все метки)

Здравствуйте!

Имею следующий вопрос:

нужно написать функцию, вычисляющую длину массива целых чисел:

int arrayLength(int* arr)
{
// А дальше-то что?
}

Заранее всем спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2009, 04:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как вычислить количество элементов массива, переданного по ссылке? (C++):

Как вычислить количество простых чисел среди положительных элементов массива? - C++
вычислить количество простых чисел среди положительных чисел массива. Массив вводиться с клавы размер массивы (1х16)

Вычислить количество положительных элементов массива и сумму элементов массива, расположенных после последнего элемента, равного нулю - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: количество положительных элементов массива; сумму элементов...

В одномерном массиве, вычислить: а) количество элементов массива б) произведение элементов массива в) От - к + - C++
Помогите пожалуйста!.. Вводить из клавиатуры массивы и обрабатывать их, пока на запрос “Хотите продолжать работу дальше (да, нет) ?”...

Создать два массива. Вычислить количество тех элементов каждого массива, для которых выполняется неравенство: 2<элемент массива<10 - C++
помогите,пожалуйста! есть вот такие задания...ОЧЕНЬ надо на завтра... Задача 4. Определить два одномерных массива А(19) и В(16);...

В одномерном массиве состоящий из n элементов вычислить количество элементов массива, меньших C - C++
:::::::

В одномерном массиве, состоящем из n вещественных элементов, вычислить количество отрицательных элементов массива - C++
1)количество отрицательных элементов массива; 2)сумму модулей элементов массива, расположенных после минимального по модулю элемента. ...

7
ISergey
Maniac
Эксперт С++
1395 / 906 / 56
Регистрация: 02.01.2009
Сообщений: 2,707
Записей в блоге: 1
15.02.2009, 04:31 #2
Можно так :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int foo(int *arr)
{
    return static_cast<int>(_msize(arr)/sizeof(int));
    //return (int)(_msize(arr)/sizeof(int));
}
int main()
{
    int *arr = new int[6];
    cout<<foo(arr)<<endl;
    return 0;
}
0
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
15.02.2009, 09:05 #3
Используй sizeof. Она подсчитает тебе обещий размер массива, а затем подели полученное число на размер одного элемента.
0
voff4igg
0 / 0 / 0
Регистрация: 15.02.2009
Сообщений: 11
16.02.2009, 21:32  [ТС] #4
Спасибо за ответы, есть ещё один вопрос на эту тему...

Если мы делаем так:
C++
1
2
int* pArray = new int[9];
cout << _msize(pArray) << endl;
, то всё ок. А по какой причине не работает такой код?
C++
1
2
3
int intArray[] = {1,3,4,5};
int *pArray2 = intArray;
cout << _msize(pArray2) << endl;
Т.е. когда указатель ссылается на первый элемент статически объявленного массива...
0
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
16.02.2009, 21:35 #5
Имя массива это и есть указатель на его первый элемент
0
voff4igg
0 / 0 / 0
Регистрация: 15.02.2009
Сообщений: 11
16.02.2009, 21:41  [ТС] #6
Понятно, но вопрос в другом. Почему же не работает код, который я указал...
0
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,405
16.02.2009, 21:55 #7
В общем случае, ты эту длину никак не определишь. _msize выполняется только для динамически выделенной памяти (подробности - в МСДН). Для стековых массивов она не работает. А твоя функция int arrayLength(int* arr) принимает массивы без разбора - динамические ли, стековые ли... - ей все равно.

Кстати, функция эта принимает массив, передаваемый по указателю, а не по ссылке.
0
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
17.02.2009, 23:20 #8
Цитата Сообщение от voff4igg Посмотреть сообщение
int *pArray2
а какой адрес у этого указателя?
0
17.02.2009, 23:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2009, 23:20
Привет! Вот еще темы с ответами:

В одномерном массиве, состоящем из n вещественных элементов, вычислить количество отрицательных элементов массива - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество отрицательных элементов массива; 2) сумму модулей...

Вычислить произведение элементов массива с четными номерами и количество элементов, лежащих в диапазоне - C++
Дан одномерный массив, состоящий из 16ти чисел от –99 до 99, генерируемых случайным образом. Вычислить произведение элементов массива с...

В одномерном массиве, состоящем из n вещественных элементов, вычислить количество отрицательных элементов массива - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество отрицательных элементов массива; 2) сумму модулей...

В одномерном массиве, состоящим из n вещественных элементов вычислить количество элементов массива, больших С - C++
#include &quot;stdafx.h&quot; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.