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

В чем отличие указателей и массивов на примере strlen()? - C++

Восстановить пароль Регистрация
 
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
15.03.2011, 11:51     В чем отличие указателей и массивов на примере strlen()? #1
Здравствуйте уважаемые форумчаче. Появился вот такой вопрос.

Почему функция strlen работает в таком случае:

C++
1
2
3
4
5
6
7
    const int num=100;
    char arr[256];                     [B] //массив[/B]
    cout << "Enter string \n";
    cin.getline(arr, num);
    int k;
    k=strlen(arr);
    cout << k << "\n";
а в таком случае, непонятно как работает:

C++
1
2
3
4
5
6
7
    const int num=100;
    char *arr;                                [B]//указатель[/B]
    cout << "Enter string \n";
    cin.getline(arr, num);
    int k;
    k=strlen(arr);
    cout << k << "\n";
во втором случае функция strlen ведет подсчет только до 7-10 символов и нескольких пробелов. Если много немного больше то вылет из программы. Подскажите пожалуйста почему так? Ведь массив и указатель это одно и то же.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2011, 11:51     В чем отличие указателей и массивов на примере strlen()?
Посмотрите здесь:

C++ Отличие инкриментов указателей
В чем отличие printf от cout? C++
C++ В чем отличие While от Do... While?
C++ C++, в чем отличие операций добавления в программе
C++ cin.get в чем отличие ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
15.03.2011, 12:03     В чем отличие указателей и массивов на примере strlen()? #2
во втором случае указатель указывает на рандомный блок памяти, который может вобще нельзя читать или писать

Добавлено через 1 минуту
в первом случае arr указывает на блок памяти(стек) из 256 байт(грубо говоря) в которые можно писать

Добавлено через 43 секунды
имя массива -есть указатель, во втором случае он неопределён
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
15.03.2011, 12:06  [ТС]     В чем отличие указателей и массивов на примере strlen()? #3
как не определен? - он указывает на char

Все, понял! Указатель должен указывать на что то. В моем случае он не на что не указывает! Спасибо!
dimon1984
40 / 38 / 0
Регистрация: 22.01.2011
Сообщений: 670
15.03.2011, 12:13     В чем отличие указателей и массивов на примере strlen()? #4
C++
1
cin.getline(arr=new char(num), num);
Yandex
Объявления
15.03.2011, 12:13     В чем отличие указателей и массивов на примере strlen()?
Ответ Создать тему
Опции темы

Текущее время: 00:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru