Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
49 / 49 / 13
Регистрация: 21.04.2009
Сообщений: 265
1

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

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

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

Почему функция 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 символов и нескольких пробелов. Если много немного больше то вылет из программы. Подскажите пожалуйста почему так? Ведь массив и указатель это одно и то же.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2011, 11:51
Ответы с готовыми решениями:

В чем отличие ссылочных переменных от указателей?
Всем привет. Вопрос в теме, чем отличаются int a=5; int &amp;p=a; от int a=5; int *p=&amp;a; Кроме...

В чем отличие Множеств, списков, массивов?
В чем отличие Множеств, списков, массивов? Вроде как это почти одно и тоже

Массив указателей и strlen()
Извините за (возможно) глупый вопрос, но как мне передать в функцию strlen() элемент массива...

В чем отличие многомерного массива (прямоугольного) от "зубчатых" массивов
Объясните пожалуйста в чем отличие многомерного массива(прямоугольного) от &quot;зубчатых&quot; массивов(т.е...

3
Формучанин
364 / 294 / 42
Регистрация: 02.11.2010
Сообщений: 1,242
15.03.2011, 12:03 2
во втором случае указатель указывает на рандомный блок памяти, который может вобще нельзя читать или писать

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

Добавлено через 43 секунды
имя массива -есть указатель, во втором случае он неопределён
1
49 / 49 / 13
Регистрация: 21.04.2009
Сообщений: 265
15.03.2011, 12:06  [ТС] 3
как не определен? - он указывает на char

Все, понял! Указатель должен указывать на что то. В моем случае он не на что не указывает! Спасибо!
0
40 / 38 / 5
Регистрация: 22.01.2011
Сообщений: 670
15.03.2011, 12:13 4
C++
1
cin.getline(arr=new char(num), num);
1
15.03.2011, 12:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2011, 12:13
Помогаю со студенческими работами здесь

В чем отличие двумерного массива типа char от массива указателей на char?
В чем отличие двумерного массива типа char и массива указателей на char ?

Создание массивов указателей на массивы указателей
Помогите в решении задачи: создал массив указателей на массивы указателей на строки, но компилятор...

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru