Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

15.03.2011, 11:51. Просмотров 441. Ответов 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 символов и нескольких пробелов. Если много немного больше то вылет из программы. Подскажите пожалуйста почему так? Ведь массив и указатель это одно и то же.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2011, 11:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос В чем отличие указателей и массивов на примере strlen()? (C++):

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

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

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

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

Отличие приведение типов указателей - 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*...

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

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

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

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

В чем отличие While от Do... While? - C++
Я понял ,что в While сначала проверяется условие,а потом если оно истинно выполняются операторы,а в Do...while все наоборот . Как я...

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

В чем отличие с++ и visual c++ ? - C++
выбирая книгу,по программированию на языке с++ на этом сайте, наткнулся на разделение в отдельные классы C++ и Visual C++, объясните...

В чем отличие typename от class? - C++
Зачем нужно typename В чем отличие от class ?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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