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

memset - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Какую площадь и периметр будет квадрат, описанный вокруг круга заданной площади http://www.cyberforum.ru/cpp-beginners/thread98478.html
Ето надо решыть!!! Пожалуста помогите!!!! А) Заданное с клавиатуры действительное число уменьшить на 10. Б) Вычислить, - задать с клавиатуры. В) Какую площадь и периметр будет квадрат, описанный вокруг круга заданной площади. Г) Треугольник задан координатами вершин А (0; 0), В (11; 10) и С (-11; 12). Вычислить высоту и биссектрисе. Д) Какой порядковый номер имеет символ «V» в...
C++ Нужно протестить програмку Она маленькая, все что умеет: переводить числа с любой системы счисления в любую в диапазоне как целые так и дробные и представлять числа в прямых и дополнительных двоичных кодах. Меня интересует: 1. проходит ли процес инсталяции и удается ли запустить програму на "чужем" ПК; 2. удобная ли она в обращении; 3. верн ли она работает (мои тесты прошла). http://www.cyberforum.ru/cpp-beginners/thread98461.html
C++ Мне нравятся мальчики!
Написать программу, которая по введенному вопросу «Кто ты: мальчик или девочка? Введи Д или М». В зависимости от ответа выдает на экран текст «Мне нравятся девочки!» или «Мне нравятся мальчики!»
удалить из массива максимальный из четных элементов C++
// labaaaaaaa1.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <conio.h> #include <iostream> #include <stdio.h> void createArr(int &, int &); int findMAx(int, int);
C++ Ошибка при добавлении #include <iostream.h> http://www.cyberforum.ru/cpp-beginners/thread98447.html
Почему при добавлении строчки #include <iostream.h> выдает ошибку fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory
C++ Преобразование чисел в двоичный вид Задача.С клавиатуры вводится целое число. Необходимо вывести его двоичное представление на экран. Отрицательные числа выводятся в дополнительном коде. Необходимо также решить обратную задачу: преобразовать двоичное число в десятичный вид. Дополнительный код образуется из прямого путем инверсии бит и прибавления единицы.Заранее спасибо. подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
24.02.2010, 00:17     memset
Цитата Сообщение от Syltan Посмотреть сообщение
Хорошо, скажите в двух словах, какой смысл от memset?
Цитата Сообщение от Syltan Посмотреть сообщение
Вообще прочитал ,что эта функция заполняет буфер определённым числом или символом, если это строчный буфер.
Но прочитал также что эта функция применяется для обнуления структур
Вы сами себе ответили Функция memset() заполняет каждый(!) байт в переданной последовательности указанным значением. Для обнуления структур в С её действительно удобно использовать:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct {
    int ival;
    double dval;
} TwoVals_t;
 
int main(void){
    TwoVals_t *arr;
    int i, cnt = 3;
    
    if ( ( arr = (TwoVals_t*)calloc(cnt, sizeof(TwoVals_t)) ) == NULL )
        exit(1);
    memset(arr, 0, cnt * sizeof(TwoVals_t));
    
    for ( i = 0; i < cnt; ++i ){
        if ( arr[i].ival != 0 || arr[i].dval != 0.0 ){
            printf("Shit happens!\n");
            exit(1);
        }
    }
    printf("All values is set to zero\n");
    
    free(arr);
    exit(0);
}
В STL С++ есть функция fill - вот с её помощью можно заполнять сразу все поля класса, и то при условии, что для класса определён оператор = (ну или тот, который компилятор сам сделает, подойдёт)...

Добавлено через 1 минуту
Цитата Сообщение от outoftime Посмотреть сообщение
скорей всего все переменные в сруктуре удут не в смежных участках памяти
Да ну?!

кстати, calloc() и так значения в 0 устанавливает, для чистоты эксперимента лучше
C
1
if ( ( arr = (TwoVals_t*)malloc(cnt * sizeof(TwoVals_t)) ) == NULL )
написать, но сути не меняет...
 
Текущее время: 16:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru