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

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

Войти
Регистрация
Восстановить пароль
 
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
#1

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

15.03.2011, 11:51. Просмотров 415. Ответов 3
Метки нет (Все метки)

Здравствуйте уважаемые форумчаче. Появился вот такой вопрос.

Почему функция 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++
Всем привет. Вопрос в теме, чем отличаются int a=5; int &amp;p=a; от int a=5; int *p=&amp;a; Кроме того, что ссылочная переменная...

Отличие инкриментов указателей - C++
Чем отличатеся ++*p от (*p)++ и от *p++ вроде увеличивается значение а не адлрес указателя.....

Отличие приведение типов указателей - C++
Чем отличаются при Base* a_ptr = new Derivered(); следующие строки: A) auto ptr = static_cast&lt;Derived*&gt;( a_ptr ); B) auto ptr =...

Массив указателей. Найти отличие между двумя конструкциями - C++
Привет! Возник вопрос в чем разница между char* arr и char arr не одно и тоже ли это? почему например когда я пишется char*...

cin.get в чем отличие ? - C++
Всем доброго времени суток, подскажите в чем отличие в этих строках: char a; cin.get(a); a = cin.get();

В чем отличие printf от cout? - C++
Вопрос по теме , чем они отличаются и что лучше использовать? :)

В чем отличие decltype и auto - C++
в чем отличие типа decltype и типа auto?

В чем отличие алгоритмов set_union и merge? - C++
Всем привет! Уважаемые форумчане, подскажите пожалуйста, в чем отличие алгоритмов set_union и merge? Выходная последовательность обоих...

C++, в чем отличие операций добавления в программе - C++
Всем привет, в программировании новичок, помогите ответить на вопрос, в чем отличие добавлений элементов в каждом задании.. Т.е. сказать в...

Нотации массивов и указателей - C++
Айвор Хортон в своей книге Beginning Visual C++ 2010 утверждает (стр. 183, 2-й абзац сверху) что нотация указателей работает быстрее...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
15.03.2011, 12:03     В чем отличие указателей и массивов на примере strlen()? #2
во втором случае указатель указывает на рандомный блок памяти, который может вобще нельзя читать или писать

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

Добавлено через 43 секунды
имя массива -есть указатель, во втором случае он неопределён
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()?
Ответ Создать тему
Опции темы

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