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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
#1

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

27.05.2013, 21:31. Просмотров 276. Ответов 6
Метки нет (Все метки)

Можно ли как-то избавиться от скобочек вокруг (*temp), как тут вообще переписать это?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Item * ReadItems() {
    Item *head = NULL, **temp;
    ifstream IN(itemsName);
    temp = &head;
    
        char buf[MAX_LEN];
        while (IN.getline(buf, MAX_LEN, '\n')) {
            *temp = new Item;
            int i = 0;
            while (buf[i] != ' ')
                ++i;
            buf[i] = '\0';
            (*temp)->name = new char[i];
            strcpy((*temp)->name, buf);
            i++;
            (*temp)->amount = atoi(buf + i);
            temp = &(*temp)->next;
        }
    
    IN.close();
    *temp = NULL;
    return head;
}
Добавлено через 6 минут
Например если вот так делаю, то где ошибка?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Item * ReadItems() {
    Item *head = NULL, *temp=head;
    ifstream IN(itemsName);
    //temp = *head;
        char buf[MAX_LEN];
        while (IN.getline(buf, MAX_LEN, '\n')) {
            temp = new Item;
            int i = 0;
            while (buf[i] != ' ')
                ++i;
            buf[i] = '\0';
            temp->name = new char[i];
            strcpy(temp->name, buf);
            i++;
            temp->amount = atoi(buf + i);
            temp = temp->next;
        }
    
    IN.close();
    //*temp = NULL;
    return head;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 21:31     Указатели
Посмотрите здесь:

Указатели - C++
Помогите. Код рабочей программы через простое обращение к массиву. нужно чтоб обращение было через адресацию с использованием (& *)...

Указатели - C++
Нужно очень срочно. 1. Дано целое n>2. Напечатать все простые числа из диапазона ; 2. Заданы 3 натуральных числа а,b,c которые...

Указатели - C++
Помогите плиз! Введите с клавиатуры данные в массив целого типа, а затем перепишите их значения в другой массив удвоенной размерности...

Указатели - C++
Наткнулся на вот такой цикл for (char p=str; *p!=(char)0; ++p) ,поясните пожалуйста что значит *p!=(char)0

Указатели - C++
1.Заданы три натуральных числа А, В, С, которые обозначают число, месяц и год. Найти порядковый номер даты, начиная отсчет с начала года. ...

Указатели в С++ - C++
Здравствуйте...требуется помощь по следующей задаче... Задача: Создать функцию, которая возвращает количество элементов массива меньше...

Указатели - C++
int k=5; int *ukaz; ukaz=&k; *ukaz=17; printf("%o\n",ukaz); printf("%o\n",k); system("pause"); Может, что то я делаю не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.05.2013, 21:45     Указатели #2
C++
1
2
3
4
5
6
    Item *temp;
    ...
    temp = head;
    ...
    strcpy( temp->name, buf );
    ...
Остальное по-аналогии..
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
28.05.2013, 10:01  [ТС]     Указатели #3
Цитата Сообщение от lazybiz Посмотреть сообщение
C++
1
2
3
4
5
6
    Item *temp;
    ...
    temp = head;
    ...
    strcpy( temp->name, buf );
    ...
Остальное по-аналогии..
Этот способ представлен в моем втором варианте, не работает

Добавлено через 11 часов 17 минут
up, вопрос актуален.
zss
Модератор
Эксперт С++
6281 / 5884 / 1904
Регистрация: 18.12.2011
Сообщений: 15,093
Завершенные тесты: 1
28.05.2013, 10:28     Указатели #4
Вы же читаете массив переменных типа Item.
Все будет гораздо понятнее, если сначала прочитать файл в холостую
и определить количество записей, а потом создать массив head нужного размера,
перемотать файл на начало и читать прямо в этот массив.
_Mutex
Заблокирован
28.05.2013, 10:51     Указатели #5
C++
1
(**temp).name
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
28.05.2013, 21:55  [ТС]     Указатели #6
Извините, что повторяюсь, но вопрос еще актуален, up.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2013, 22:34     Указатели
Еще ссылки по теме:

Указатели!! - C++
Пользователь вводит строку с клавиатуры - предложение с пробелами и знаками пунктуации длиной до 100 символов. Вывести на экран все знаки...

Указатели С - C++
Объясните пожалуйста как получается что запись типа *(1+data) эквивалентна записи 1. Как из data получается *(1+data) и *(data+1)...

указатели - C++
Вот собственно код, проблема в том что я непойму как он работает, что именно непонятно указал в комментариях unsigned char **...

Указатели - C++
например мы имеем данный кусок кода char str="eto prostoi test"; char *start; start=str; cout<<start; *start='b'; ...

указатели - C++
Здравствуйте! Ребят , вы не могли бы объяснить некоторые нюансы ,связанные с указателями, недалекому человеку? допустим: int N; ...


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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
28.05.2013, 22:34     Указатели #7
Что должна возвращать функция ReadItems ?

Добавлено через 11 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Item * ReadItems() {
    Item *head = 0, *tail, *temp;
    ...
    while ( ... ) {
        temp = new Item;
        ...
        // заполняем temp
        ...
        if ( !head ) {
            head = tail = temp;
            head->next = 0;
        } else {
            tail->next = temp;
            tail = tail->next;
        }
    }
    ...
    return head;
}
Yandex
Объявления
28.05.2013, 22:34     Указатели
Ответ Создать тему
Опции темы

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