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

Как осуществляется преобразование типов (для чего)? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Неименованые каналы http://www.cyberforum.ru/cpp-beginners/thread427867.html
Почему при работе с pipe() в отце и сыновьям процессе необходимо закрывать ненужные дискрипторы?
C++ Конструктор копирования Помогите пожалуйста разобраться, необходимо добавить конструктор копирования, теорию знаю, а как на практике применить не знаю. Программа вот - http://zalil.ru/32492444. Добавлено через 33 минуты... http://www.cyberforum.ru/cpp-beginners/thread427865.html
C++ Шаблоны C++
Написал template на С++, но он нифига не компилица, пишет мол типа не могу string в int преобразовать в строчке int out_param = (int)param; #include <stdio.h> #include <conio.h> #include...
C++ Необходимо найти максимальный элемент матрицы, используя несколько потоков
Добрый день программисты, необходимо выполнить поиск наименьшего элемента матрицы используя количество потоков равное количеству строк данной матрицы. Каждый поток находит минимальный элемент своей...
C++ Скопировать в файл F2 только четные строки из F1 http://www.cyberforum.ru/cpp-beginners/thread427856.html
Постановка задачи: Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию Выполнить задание. При разработке алгоритма считать, что количество строк в исходном файле...
C++ Здравствуйте, как запихнуть базу данных в программу.?? Задача заключается в том что я незнаю как запихнуть информацию(база данных) во время написание программы, и очень бы хотелось чтоб вы мне помогли в этом, спс)))) подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9681 / 5631 / 954
Регистрация: 25.07.2009
Сообщений: 10,808
14.01.2012, 05:40
Цитата Сообщение от Gepar Посмотреть сообщение
VN, преобразование типов необходимо не столь часто, более разумный пример тебе
C
1
char *c=(char*) malloc(sizeof(char)*1);
Здесь без преобразования типов не обойтись так как malloc возвращает просто выделенную память в виде указателя на void, в переменной указатель на char мы собираемся хранить переменную типа char, а не просто кусок памяти поэтому и нужно сделать преобразование.
На самом деле в С всё совсем не так!
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
#include <stdio.h>
#include <stdlib.h>
 
int main(void){
    int len = 16, i;
    char * buf = malloc(len);
    
    if ( ! buf ){
        perror("malloc");
        exit(1);
    }
    
    for ( i = 0; i < len-1; ++i )
        buf[i] = 'a' + i;
    buf[i] = 0;
    printf("%s\n", buf);
    
    /* мало того, так тоже отработает */
    for ( i = 0; i < len / sizeof(int); ++i )
        printf("%#x\n", ((int*)buf)[i]);
    
    free(buf);
    
    exit(0);
}
Код
~/cpp/other $ gcc -o void void.c 
~/cpp/other $ ./void 
abcdefghijklmno
0x61626364
0x65666768
0x696a6b6c
0x6d6e6f00
~/cpp/other $
Вот в С++ так работать не будет
Код
~/cpp/other $ g++ -o void++ void.c
void.c: In function 'int main()':
void.c:6: error: invalid conversion from 'void*' to 'char*'
~/cpp/other $
но ТС про С спрашивал...

Цитата Сообщение от VN Посмотреть сообщение
int *p=(int*)str; // ругается на p
Просто из любопытства - а Вы этим чего добиться хотели?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru