Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Преобразования типов


Автор: My_Pioner 14.12.2004, 11:30
Вот строчка кода, вопрос как наиболее оптимальным способом записть по адресу зарезервированному этим указателем число, объект или еще что нибудь.

Код

void *my_void = malloc(12);
// ваш код пожалуйста

Автор: _hunter 14.12.2004, 11:54
если объект -- почемы бы new не юзать?
строку -- strcpy((char *)(my_void), "test");

Автор: NiJazz 14.12.2004, 12:13
Поправка:
Код

void *my_void = (void*)malloc(my_void_size_in_bytes);


Код

char* s = (char*s)malloc(str_len);
s = "Hello, Dolly!";  // str_len >= strlen("Hello, Dolly!");


Но если строка объявлена как
char s[str_len], то для того, чтобы присвоить ей значение, нужно использовать strcpy.

Код

char s[str_len];
strcpy(s, "Hello, Dolly!");

Добавлено @ 12:16
массив же можно запонить либо в цикле
Код

for (int i = 0; i<arr_size; i++)
{
  my_array[i] = rand % 10;
}

либо так:
Код

memcpy(my_array, source_array, arr_size);

Автор: srd 14.12.2004, 12:18
Цитата

Код

char* s = (char*s)malloc(str_len);
s = "Hello, Dolly!";  // str_len >= strlen("Hello, Dolly!");


Данный пример не верен. В первой строке выделяется str_len байт, а адрес выделенного куска памяти записывается в указатель s.
Во второй строке в указатель s записывается адрес строкового литерала, а память, на которую он указывал раньше, теряется. Следует пользоваться strcpy (и следить, чтобы длина записываемой строки не превышала длину выделенного куска памяти), memcpy и т.п.
Код

char* s = (char*s)malloc(str_len);
strcpy(s, "Hello, Dolly!");  // str_len >= strlen("Hello, Dolly!");


Автор: My_Pioner 14.12.2004, 13:27
Господа, вы здесь приводите примеры с символьным типом или правильнее выразиться с указателем на символьный тип. Кто то из вас прав, а кто-то не совсем но повнимательней прочитайте условие задачи!!!

Автор: NiJazz 14.12.2004, 13:29
My_Pioner
Тогда вопрос должен быть конкретнее.

Автор: Adil' 14.12.2004, 13:30
My_Pioner, а ты бы написАл по-конкретней, что собственно нужно-то?

Автор: LuckLess 14.12.2004, 13:36
memcpy();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)