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

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

19.04.2012, 16:55. Просмотров 323. Ответов 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++):

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

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

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

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

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

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

8
NoMasters
Псевдослучайный
1909 / 1120 / 90
Регистрация: 13.09.2011
Сообщений: 3,179
19.04.2012, 17:10 #2
Цитата Сообщение от sitesv Посмотреть сообщение
*(a+i)=b;
В результате вычислений в левой части получается char, соответственно b к приведётся к этому типу с потерей данных.
0
Kuzia domovenok
2215 / 1984 / 446
Регистрация: 25.03.2012
Сообщений: 6,971
Записей в блоге: 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Эксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,231
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
2215 / 1984 / 446
Регистрация: 25.03.2012
Сообщений: 6,971
Записей в блоге: 1
19.04.2012, 17:35 #5
Цитата Сообщение от easybudda Посмотреть сообщение
сначала посчитается a+i, за тем приведётся к unsigned short * и на последней итерации удачно вылетит за границу массива.
с какого перепуга? последняя итерация i=65534
0
sitesv
24 / 22 / 4
Регистрация: 22.04.2010
Сообщений: 667
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
2215 / 1984 / 446
Регистрация: 25.03.2012
Сообщений: 6,971
Записей в блоге: 1
19.04.2012, 17:42 #8
ну дык,
а можно вообще a[i]=b;
или memset, да
0
sitesv
24 / 22 / 4
Регистрация: 22.04.2010
Сообщений: 667
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
Привет! Вот еще темы с решениями:

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

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

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

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


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

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

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