+ Ответить в теме
Показано с 1 по 6 из 6.

Тема: Указатели

  1. #1
    dummy
    coder
    Lotles is on a distinguished road
    Регистрация
    03.07.2010
    Сообщений
    12

    Указатели

    Не совсем понимаю указатели
    Код :
    char* str[2]={"111","222"};
    cout << *(&str[0]) << endl;
    cout << *str[0] << endl;
    Не понимаю различия
    Объясните pliz !!!

  2. #2
    dummy Ilyxa is on a distinguished road
    Регистрация
    28.07.2010
    Сообщений
    6

    Re: Указатели

    В первой строке неявно объявляются 2 массива char'ов, содержащие "111" и "222" соотв., а затем явно - массив указателей на них (char* str[2]).
    Во второй строке в функцию cout передается просто-напросто первый указатель, зачем было городить огород с взятием адреса указателя и затем переходом по нему, в итоге получая тот же самый указатель? Мог бы написать сразу cout << str[0] << endl; Если в cout передаешь указатель на char (char*), она будет шпарить по нему, увеличивая адрес, до тех пор, пока не наткнется на нулевой байт - признак конца строки. Поэтому выводится вся строка.
    В третьей строке в функцию передается 0 символ '1' (простой char), благодаря операции перехода по указателю str[0]. Вот и выводится только 1 char.

  3. #3
    dummy
    coder
    Lotles is on a distinguished road
    Регистрация
    03.07.2010
    Сообщений
    12

    Re: Указатели

    1 вопрос
    Если str[0]- указатель, то почему
    Код :
    cout << str[0] << endl
    выдает 111, по идеи должен быть адрес ?
    Последний раз редактировалось Lotles; 28.07.2010 в 17:25.

  4. #4
    dummy Ilyxa is on a distinguished road
    Регистрация
    28.07.2010
    Сообщений
    6

    Re: Указатели

    хм, я ж вроде писал уже)) функции ввода-вывода вообще работают со строками только посредством указателей, если тому же cout'у передать char*, он и выведет строку по этому указателю. Точно так же если напишешь printf("%s",str[0]); - тоже получишь на консоль всю строку. Нужен адрес - без проблем, пишешь: cout << (int)(str[0]) << endl; - интерпретируешь аргумент как int, cout соответственно int и выдаст)) напишешь cout << "Mazafaka" << endl; - вызов будет проинтерпретирован как cout << (const char*)somearray << endl;

  5. #5
    dummy
    coder
    Lotles is on a distinguished road
    Регистрация
    03.07.2010
    Сообщений
    12

    Re: Указатели

    Спасибо щас полностью разобрался. В этом и была проблема, то что cout возвращает данные по указателю

  6. #6
    dummy Ilyxa is on a distinguished road
    Регистрация
    28.07.2010
    Сообщений
    6

    Re: Указатели

    Рад был помочь))

+ Ответить в теме

Похожие темы

  1. указатели
    By barmalei_slv in forum C и C++
    Replies: 0
    Последнее сообщение: 17.12.2009, 16:25
  2. Указатели !!
    By Mighty in forum задачи на C и C++
    Replies: 1
    Последнее сообщение: 12.11.2009, 10:46
  3. указатели
    By DoggyDog in forum задачи на C и C++
    Replies: 0
    Последнее сообщение: 25.03.2009, 18:50
  4. Указатели
    By Claster in forum C и C++
    Replies: 4
    Последнее сообщение: 07.04.2008, 11:51
  5. указатели
    By michael in forum C и C++
    Replies: 5
    Последнее сообщение: 22.11.2004, 10:49

Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения