Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
1

Создать одномерный массив с числом элементов как у исходного

14.05.2012, 01:52. Просмотров 471. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 void new_arr(int size)
  {
    int *B=new int[size];
      cout<<sizeof(B)/sizeof(int) // =1 элемент
    delete[size]B;
  }
 
void main()
 {
   const N=100;
   int A[N];     
   cout<<sizeof(A)/sizeof(int)<<endl; //=100 элементов
   new_arr(N); //пытаюсь создать массив с такой же размерностью
 }
Пытался создать массив на основе исходного, нужно чтобы количество элементов в массиве B стало таким же как число элементов в массиве A. Я думал, что прописывая размер, в массив должно выделиться столько байт, сколько я указал, но что-то я не понимаю почему тогда разное число элементов у массивов выходит при этом коде.

Подскажите как правильно решить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2012, 01:52
Ответы с готовыми решениями:

Создать массив из различных элементов исходного
Кто чем может.Новичок ,только учусь 2. Дан целочисленный массив А, среди...

Создать новый массив из различных элементов исходного массива
дан целочисленный массив а(8), среди элементов есть одинаковые. создать массив...

Создать массив состоящий из различных элементов исходного массива
Всем привет! Помогите с задачкой, говорят простая, но я не могу ее додумать %-)...

Создать массив из номеров нулевых элементов исходного массива
В целочисленной последовательности есть нулевые элементы. Создать массив из...

Создать массив, каждый элемент которого содержит сумму делителей элементов исходного массива
с клавиатуры вводится масив. создать новый массив в который каждый...

3
Toshkarik
1150 / 867 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
14.05.2012, 02:00 2
При применении sizeof к имени статического массива, возвращается размер в байтах всего массива. При применении к указателям, возвращается размер самого указателя. При очистке динамически выделенной памяти, не нужно указывать размер массива, квадратные скобки нужны лишь для указания, что удаляется массив данных. То есть просто нужно писать
C++
1
delete [] B;
1
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
14.05.2012, 02:57  [ТС] 3
Toshkarik , хорошо только имя массива это ведь тоже указатель, поэтому по логике не должно быть разницы. Ведь Определение Указатель=определение Указатель. Парадокс получается, что обращаясь к одному и тому же я должен получать разные ответы

Увы ответа тут и близко нет

Добавлено через 39 минут
Больше наводка чем ответ
sizeof(указатель) == кол-во байт нужных для хранения самого Указателя на текущей платформе(не размер области на которую он указывает)
sizeof(массив) == кол-во байт нужных для хранения содержимого Данного массива

то же, что вы сказали, просто понятнее написано

Хотя и не понимаю почему, но это ладно. Я никак не смогу узнать количество байт для хранения содержимого в массиве B ?
Я понимаю, что выделил size байт и всегда к этому size могу обратиться, а вот если опустить этот size байт и попробовать их вычислить, то такого способа нет?
0
Toshkarik
1150 / 867 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
14.05.2012, 03:33 4
Имя статического массива имеет лишь природу поведения константного указателя на первый элемент. Размер статического массива известен на этапе компиляции. Операция sizeof выполняется во время компилирования, то есть это операция времени компиляции а не исполнения. При компиляции просто будут подставлены значения которые вернула sizeof для той системы, для которой происходит компиляция. Размер же динамических данных может изменятся не один раз во время выполнения программы.

Добавлено через 1 минуту
Цитата Сообщение от daslex Посмотреть сообщение
то такого способа нет?
Нет конечно, Вы должны знать, сколько Вы выделяете памяти. В данном случае будет выделено size * sizeof( int ) байт.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2012, 03:33

Создать массив из элементов исходного файла, внеся в него числа, превосходящие среднее значение
Создать двоичный файл, куда записать n вещественных чисел. Создать массив из...

На основе исходного файла создать массив удвоенных нечётных чисел и упорядочить его по возрастанию элементов
Создать двоичный файл, куда записать n целых чисел. На основе исходного файла...

Создать одномерный массив, содержащий индексы элементов матрицы
Помогите пожалуйста решить Дана матрица 6х8 целого типа. Создать одномерный...


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

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

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