Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
sitesv
24 / 22 / 4
Регистрация: 22.04.2010
Сообщений: 669
1

Указатель

19.04.2012, 16:55. Просмотров 338. Ответов 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
Ответы с готовыми решениями:

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как...

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

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

Как правильно удалять выделенную память под указатель на указатель?
есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt;...

Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель
Всем привет, встретил в книге такой пример добавления узла в дерево: typedef...

8
NoMasters
Псевдослучайный
1909 / 1120 / 90
Регистрация: 13.09.2011
Сообщений: 3,178
19.04.2012, 17:10 2
Цитата Сообщение от sitesv Посмотреть сообщение
*(a+i)=b;
В результате вычислений в левой части получается char, соответственно b к приведётся к этому типу с потерей данных.
0
Kuzia domovenok
2421 / 2151 / 525
Регистрация: 25.03.2012
Сообщений: 7,755
Записей в блоге: 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Эксперт С++
10152 / 6058 / 1523
Регистрация: 25.07.2009
Сообщений: 11,481
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
2421 / 2151 / 525
Регистрация: 25.03.2012
Сообщений: 7,755
Записей в блоге: 1
19.04.2012, 17:35 5
Цитата Сообщение от easybudda Посмотреть сообщение
сначала посчитается a+i, за тем приведётся к unsigned short * и на последней итерации удачно вылетит за границу массива.
с какого перепуга? последняя итерация i=65534
0
sitesv
24 / 22 / 4
Регистрация: 22.04.2010
Сообщений: 669
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
1559 / 1037 / 93
Регистрация: 17.04.2009
Сообщений: 2,995
19.04.2012, 17:41 7
угу, а a[i] - для слабаков ?)
1
Kuzia domovenok
2421 / 2151 / 525
Регистрация: 25.03.2012
Сообщений: 7,755
Записей в блоге: 1
19.04.2012, 17:42 8
ну дык,
а можно вообще a[i]=b;
или memset, да
0
sitesv
24 / 22 / 4
Регистрация: 22.04.2010
Сообщений: 669
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

Добавление в бинарное дерево: почему используется указатель на указатель?
Здравствуйте, Корень создаёться вот так TREE *root=NULL; непонятно почему...

Объяснить работу функции, возвращающей указатель на указатель на char
Добрый день! Сможете объяснить что означает запись char **InputFile(int...

Передача умного указателя в функцию принимающую указатель на указатель
Итак имеется функция со следующим параметром: HRESULT __stdcall...


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

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

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