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

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

Войти
Регистрация
Восстановить пароль
 
sitesv
24 / 22 / 2
Регистрация: 22.04.2010
Сообщений: 663
#1

Указатель - C++

19.04.2012, 16:55. Просмотров 308. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
unsigned short b=0xffff;
char *a=malloc(65536);
for(int i=0;i<65536;i+=2)
{
     *(a+i)=b;
}
free(a);
Добрый день!
Создал указатель на область памяти.
Хочу по указателю записывать сразу двухбайтовую переменную.
Что-то мне подсказывает, что я делаю что-то не так...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2012, 16:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель (C++):

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

Функция, принимающая указатель и число байт и выделяющая память под указатель - C++
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и число байт и выделяющую память под...

Как правильно удалять выделенную память под указатель на указатель? - C++
есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; void sort_1(const...

Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель - C++
Всем привет, встретил в книге такой пример добавления узла в дерево: typedef struct tree { int data; tree *left, *right,...

Объяснить работу функции, возвращающей указатель на указатель на char - C++
Добрый день! Сможете объяснить что означает запись char **InputFile(int &amp;strings);? Почему именно двойное **? Буду очень благодарна...

8
NoMasters
Псевдослучайный
1762 / 1105 / 73
Регистрация: 13.09.2011
Сообщений: 3,141
19.04.2012, 17:10 #2
Цитата Сообщение от sitesv Посмотреть сообщение
*(a+i)=b;
В результате вычислений в левой части получается char, соответственно b к приведётся к этому типу с потерей данных.
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
19.04.2012, 17:25 #3
попробуй
C
1
2
for(int i=0;i<65536;i+=2)
*(    (unsigned short*)(a+i)  )=b;
или
C
1
2
for(int i=0;i<32768;i++)
*(    ((unsigned short*)a)+i )=b;
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
19.04.2012, 17:29 #4
Мало того, можно весь массив оптом заполнить
C
1
2
3
#include <string.h>
/*...*/
memset(a, 0xff, 65536);
Добавлено через 2 минуты
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
попробуй
сначала посчитается a+i, за тем приведётся к unsigned short * и на последней итерации удачно вылетит за границу массива.
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
19.04.2012, 17:35 #5
Цитата Сообщение от easybudda Посмотреть сообщение
сначала посчитается a+i, за тем приведётся к unsigned short * и на последней итерации удачно вылетит за границу массива.
с какого перепуга? последняя итерация i=65534
0
sitesv
24 / 22 / 2
Регистрация: 22.04.2010
Сообщений: 663
19.04.2012, 17:39  [ТС] #6
Получается, что сделать я должен что-то такое:
Unsigned short *a=malloc(32768*sizeof(unsigned short));
For(int i=0;i<32768;i++)
{
*(a+i)=b;
}
Free(a);

Я правильно все понял?
0
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,987
19.04.2012, 17:41 #7
угу, а a[i] - для слабаков ?)
1
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
19.04.2012, 17:42 #8
ну дык,
а можно вообще a[i]=b;
или memset, да
0
sitesv
24 / 22 / 2
Регистрация: 22.04.2010
Сообщений: 663
19.04.2012, 18:08  [ТС] #9
Т.е в памяти будут выделен 0..65535 диапазон байт и заполнять мы память будем по 2 байта за раз?
0
19.04.2012, 18:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2012, 18:08
Привет! Вот еще темы с ответами:

Указатель на указатель, функции для создания новых массивов? - C++
Всем привет! У меня в коде есть несколько новых массивов, чтобы не повторяться я создам функцию которая будет выделять память под новые...

Передача умного указателя в функцию принимающую указатель на указатель - C++
Итак имеется функция со следующим параметром: HRESULT __stdcall Function(SomeClass **param); В случае, когда создаём обычный...

Функция принимает указатель на void и возвращает указатель на int - C++
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.

Приведение любого двумерного массива к типу указатель на указатель - C++
Допустим, есть несколько массивов int arr1; int arr2; int arr3; Какое преобразование нужно сделать, чтобы подобные присвоения...


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

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

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