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

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

Войти
Регистрация
Восстановить пароль
 
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,668
#1

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

14.05.2012, 01:52. Просмотров 409. Ответов 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. Я думал, что прописывая размер, в массив должно выделиться столько байт, сколько я указал, но что-то я не понимаю почему тогда разное число элементов у массивов выходит при этом коде.

Подскажите как правильно решить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2012, 01:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать одномерный массив с числом элементов как у исходного (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
14.05.2012, 02:00 #2
При применении sizeof к имени статического массива, возвращается размер в байтах всего массива. При применении к указателям, возвращается размер самого указателя. При очистке динамически выделенной памяти, не нужно указывать размер массива, квадратные скобки нужны лишь для указания, что удаляется массив данных. То есть просто нужно писать
C++
1
delete [] B;
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,668
14.05.2012, 02:57  [ТС] #3
Toshkarik , хорошо только имя массива это ведь тоже указатель, поэтому по логике не должно быть разницы. Ведь Определение Указатель=определение Указатель. Парадокс получается, что обращаясь к одному и тому же я должен получать разные ответы

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

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

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

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

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

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

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

Создать одномерный массив из сумм положительных элементов каждого столбца матрицы - C++
Дана матрица 4х4. Создать новый одномерный массив из сумм положительных элементов каждого столбца этой матрицы. В массиве вычислить среднее...

Создать новый одномерный массив, состоящий из произведений элементов матрицы А(6,4) по столбцам - C++
Есть 2 задачи непонятно как решать (помоему там чета не хватает) подскажите...код писать не надо, просто словами расшифровать подробние. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.05.2012, 03:33
Ответ Создать тему
Опции темы

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