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

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

Войти
Регистрация
Восстановить пароль
 
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
#1

Подскажите в чем ошибка! - C++

29.06.2013, 20:08. Просмотров 530. Ответов 10
Метки нет (Все метки)

Программа должна выводить адресса букв, но в итоге выводит ошибку "error: invalid type argument of `unary *' " в 17 строке. Почему???
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    ifstream cin("input.txt");
    int address[100],word_leng[100],i=0,number,j;
    int p;
    string str,str_new;
    while(cin>>str)
    {
        word_leng[i]=str.length();
        str_new=str_new+str;
        i++;
    }
    for(j=0;j<str_new.length();++j) {
        *p=&str_new[j];
        cout<<p<<endl;
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2013, 20:08     Подскажите в чем ошибка!
Посмотрите здесь:

Подскажите в чем ошибка - C++
Не могу понять вроде все правильно а не запускается #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; ...

Подскажите в чем ошибка - C++
Не могу понять в чем ошибка #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; using namespace...

подскажите в чем ошибка - C++
поставлена задача: Задан одномерный массив В, состоящем из n вещественных элементов. Определить позиции массива, в которых расположены...

Подскажите в чем ошибка - C++
Нужно создать файл 5.дат и записать в него информацию с структуры аерофлот. Создаю я вот так: #include &lt;iostream&gt; #include &lt;stdio.h&gt; ...

Подскажите, в чем ошибка? - C++
,,,

подскажите в чем ошибка? - C++
В массив А занесены натуральные числа.Найти сумму элементов, которые кратны данному К написал код, но программа не считает сумму,...

Подскажите, в чем ошибка - C++
#include&lt;stdio.h&gt; #include&lt;cmath&gt; using namespace std; int main() { int n,a,b,c,d,t; cin&gt;&gt;n; a=9*60; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.06.2013, 21:00     Подскажите в чем ошибка! #2
C++
1
2
3
4
5
6
...
void *p;
...
p = &str_new[j];
cout << p << endl;
...
Добавлено через 1 минуту
Или без p:
C++
1
cout << (void*)&str_new[j] << endl;
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
29.06.2013, 21:08  [ТС]     Подскажите в чем ошибка! #3
@alsav22, Спасибо, но почему именно void, почему не int??? Не понимаю...
P.S. И еще 1 вопрос, как вывести буквы которые находятся по адресу &str_new[j]; ????

Добавлено через 6 минут
@alsav22, P.S.S. т. е. вывести не str_new[j], а вывести их черех *р ????
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.06.2013, 21:15     Подскажите в чем ошибка! #4
Цитата Сообщение от Nikko12 Посмотреть сообщение
но почему именно void, почему не int
Указатель (адрес) - это специальный тип, к типу int не имеет отношения. Приведение к void* нужно, чтобы cout << именно адреса выводил, иначе будет выводить всю строку, начиная с заданного адреса (так cout устроен).

Добавлено через 2 минуты
Цитата Сообщение от Nikko12 Посмотреть сообщение
И еще 1 вопрос, как вывести буквы которые находятся по адресу &str_new[j]; ????
C++
1
cout << str_new[j] << endl;
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
29.06.2013, 21:19  [ТС]     Подскажите в чем ошибка! #5
@alsav22, Но если вот так:
int m=8;
int*n=&m;
cout<<*n<<endl; если так то выведет "8", если так cout<<n<<endl; выведет адресс.

Добавлено через 2 минуты
Добавлено через 2 минуты

C++
1
cout << str_new[j] << endl;
Не, не я не это имелл ввиду, я имел ввиду как их вывести через *p, простите, что ввел Вас в заблуждение.
P.S. А если у меня есть строка "aaaabbbbcccc" и есть указатель которые указывает на адрем первой буквы "b", как мне вывести только одни буквы b???? Т. е. ответ должен быть "bbbb"
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.06.2013, 21:22     Подскажите в чем ошибка! #6
Цитата Сообщение от Nikko12 Посмотреть сообщение
я имел ввиду как их вывести через *p
C++
1
2
3
4
5
6
...
char *p;
...
p = &str_new[j];
cout << *p << endl;
...
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
29.06.2013, 21:23  [ТС]     Подскажите в чем ошибка! #7
Добавлено через 2 минуты

C++
1
cout << str_new[j] << endl;
Не, не я не это имелл ввиду, я имел ввиду как их вывести через *p, простите, что ввел Вас в заблуждение.
P.S. Если у меня есть строка "aaaabbbbcccc" и есть указатель указывающий на первую букву "b". Как мне вывести только одни буквы b???? Т. Е. Ответ должен быть "bbbb". Заранее спасибо за помощь
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.06.2013, 21:25     Подскажите в чем ошибка! #8
Цитата Сообщение от Nikko12 Посмотреть сообщение
cout<<*n<<endl; если так то выведет "8", если так cout<<n<<endl; выведет адресс.
Правильно, если адрес не строки (не char*). Если строки, то без преведения к void*, будет вся строка выводиться, а не адрес.
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
29.06.2013, 21:28  [ТС]     Подскажите в чем ошибка! #9
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
...
char *p;
...
p = &str_new[j];
cout << *p << endl;
...
Спасибо работает, но когда я точно так же сам писал, он выдавал ошибку, а когда Вы написали все сработало, мистика....
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.06.2013, 21:30     Подскажите в чем ошибка! #10
Или просто (только зачем эти ухищрения? Задание такое?):
C++
1
cout << *&str_new[j] << endl;
Добавлено через 35 секунд
Цитата Сообщение от Nikko12 Посмотреть сообщение
Спасибо работает, но когда я точно так же сам писал, он выдавал ошибку,
Скорее всего, что-то не совсем так писали... В первом коде p, у вас, даже не указатель...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2013, 21:32     Подскажите в чем ошибка!
Еще ссылки по теме:

Подскажите, в чем ошибка - C++
При компиляции программы компилятор выдает сообщение: undefined reference to `imput(int)' ld returned 1 exit status ...

Подскажите в чем ошибка?! - C++
#include&lt;windows.h&gt; LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE my_hinstance, HINSTANCE...

Подскажите в чем ошибка - C++
Вывести матрицу из 20 элементов целого типа. Определить каких элементов больше четных или нечетных { int A, i, m=0, n=0; for(i=0;...

Подскажите в чем ошибка - C++
Задача: Пусть даны целое число n, символы s1,s2,.,sn.Удалите из данной последовательность все группы букв, образующих запись abcd, то...

подскажите в чем ошибка - C++
только сегодня начал знакомство и вот уже проблемка)подскажите пожалуйста в чем ошибка)) Две дроби a/b и c/d можно сложить следующим...


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

Или воспользуйтесь поиском по форуму:
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
29.06.2013, 21:32  [ТС]     Подскажите в чем ошибка! #11
Цитата Сообщение от alsav22 Посмотреть сообщение
Или просто (только зачем эти ухищрения? Задание такое?):
C++
1
cout << *&str_new[j] << endl;
Добавлено через 35 секунд

Скорее всего, что-то не совсем так писали...
Нет, не задание, просто решил попробовать поработать с указателями В любом случае, БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО ЗА ПОМОЩЬ!!!!!
Yandex
Объявления
29.06.2013, 21:32     Подскажите в чем ошибка!
Ответ Создать тему
Опции темы

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