Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как изменить массив при передачи в виде указателя 
:(
    Опции темы
and277
Дата 11.4.2009, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 9.4.2009

Репутация: нет
Всего: нет




Разбираюсь с примерами из учебника Шилдта. Есть там одна простая задачка по реверсированию строки на кол-во заданное перем count. Компилятор ругается на то что я не могу записывать в массив. 
Я так понял - строку изменять нельзя если я передяю её в виде указателя. Не меняя параметров функции -что можно еще сделать?

Код

/*

*/
#include <iostream>
#include <cstring>
using namespace std;

void reverse(char *p, int count = 0)
{
    int i, j;
    char temp;

    if(!count)count = strlen(p) - 1;
    
    for(i = 0, j = count; i < j; i++, j--)
    {
        temp = p[i];
        p[i] = p[j];
        p[j] = temp;
    }
}

int main()
{
    char *s1 = "Privet";
    reverse(s1);

    cout << s1;

    return 0;
}


PM MAIL   Вверх
zim22
Дата 11.4.2009, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Код

char s1[] = "Privet";




--------------------
PM MAIL   Вверх
and277
Дата 11.4.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 9.4.2009

Репутация: нет
Всего: нет



Цитата(zim22 @ 11.4.2009,  10:59)
Код

char s1[] = "Privet";

Хех... smile  Клёво. Спасибо!
И все же почему когда строку иниц-ть через указатель- строка становится константой?

В книге - опечатка. Так там именно указателем строка инициализ-ся.

 
PM MAIL   Вверх
zim22
Дата 11.4.2009, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



and277, потому что, когда вы пишете char *s = "hello";
то создаётся в области памяти константный объект. и вам возвращается адрес на его первый элемент.


--------------------
PM MAIL   Вверх
and277
Дата 11.4.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 9.4.2009

Репутация: нет
Всего: нет



zim22 , понял. Большое спасибо. 

Это сообщение отредактировал(а) and277 - 11.4.2009, 11:12
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.