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

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

Войти
Регистрация
Восстановить пароль
 
maxNTF
#1

указатели и строки? - C++

04.02.2009, 15:37. Просмотров 781. Ответов 8
Метки нет (Все метки)

Люди помогите понять, ни как не дается это страшное слово указатель.
Так в общем немного ясно, не понятно вот что:
Считается что эти два выражения идентичны, ТАК?
Код
char * st1="string1";
char st2[8]="string2";
При этом я свободно могу вытянуть любое значения (изменить и т.д.) из st2, к примеру так
st2[6]='3';

А вот как такое же проделать с седьмым символом st1?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2009, 15:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос указатели и строки? (C++):

Указатели.Строки и указатели - C++
Вот условия ввода строки:Вводить и обрабатывать строки в цикле до тех пор пока первый символ не пробел Условия обработки строки: ...

Указатели и указатели на указатели, а также типы данных - C++
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

Строки и указатели - C++
Выполнить задание двумя способами используя индексы и используя указатели при работе со строками. Удалить в строке все буквы “b”,...

Указатели на строки - C++
Есть следующий код: class Strings // класс с указателями на строки (размер которого равен 8) { public: char* str1; ...

Строки и указатели........ - C++
Помогите написать прогу с помощью которой - вводится имя,фамилия,отчество а вывоится фамилия и инициалы то есть - Пушкин Александр...

Строки и указатели в C++ - C++
Проверить правильность расположения в тексте круглых скобок (количество открывающихся и закрывающихся скобок должно совпадать). Пользуясь...

8
YurA_280784
Заблокирован
04.02.2009, 16:12 #2
C++
1
2
3
for(int i = 0; i < strlen(str1); i++)
    if(i == 7 - 1)
         str1[i] = 'SomeSymbol';
0
Ensase
Флудер
191 / 29 / 5
Регистрация: 23.03.2007
Сообщений: 335
04.02.2009, 16:33 #3
Цитата Сообщение от YurA_280784 Посмотреть сообщение
C++
1
2
3
for(int i = 0; i < strlen(str1); i++)
    if(i == 7 - 1)
         str1[i] = 'SomeSymbol';
а нельзя вот так:
str[6] = 'SomeSymbol';
0
ISergey
Maniac
Эксперт С++
1391 / 902 / 55
Регистрация: 02.01.2009
Сообщений: 2,695
Записей в блоге: 1
04.02.2009, 16:58 #4
YurA_280784, и твой компелятор на этот код
C++
1
str1[i] = 'SomeSymbol';
не ругатся????
0
Zaratystra
0 / 0 / 0
Регистрация: 04.02.2009
Сообщений: 5
04.02.2009, 17:08 #5
*st1 указывает на нулевой элемент, т.е. "s".
Чтобы указать на следующий элемент нужно записать *(st1+1) и т.д.
*(st1+i)
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.02.2009, 17:29 #6
Цитата Сообщение от YurA_280784 Посмотреть сообщение
C++
1
2
3
for(int i = 0; i < strlen(str1); i++)
    if(i == 7 - 1)
         str1[i] = 'SomeSymbol';
Дурной тон программирования
0
YurA_280784
Заблокирован
04.02.2009, 17:46 #7
Короче привожу мой код, я его слегонца трансформировал.Кидаю рабочий проект и скриншот...Кстати ISergey научись ставить Release конфигурацию, а потом пиши
0
Миниатюры
указатели и строки?  
Вложения
Тип файла: rar tst6.rar (18.7 Кб, 18 просмотров)
YurA_280784
Заблокирован
04.02.2009, 17:47 #8
Лучше б не над строками пыхтели, а реально ответили на мою просьбочку в разделе Вижуал....
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
05.02.2009, 00:17 #9
Цитата Сообщение от maxNTF Посмотреть сообщение
Люди помогите понять, ни как не дается это страшное слово указатель.
Так в общем немного ясно, не понятно вот что:
Считается что эти два выражения идентичны, ТАК?

Код
char * st1="string1";
char st2[8]="string2";
При этом я свободно могу вытянуть любое значения (изменить и т.д.) из st2, к примеру так
st2[6]='3';

А вот как такое же проделать с седьмым символом st1?
Код
char * st1 = "string1";
string1 и нуль-символ записываются в read-only область, потом адрес символа s из этой read-only области присваивается st1 (адрес - это число)

Код
char st2[8] = "string2";
создаётся массив элементов, каждый размера char, в массив копируются символы string2 и нуль-символ

запомнил, что если видишь что-то вроде "string1" без имени, это значит что оно записано в неменяемую область памяти ? и будет существовать до конца программы в таком виде

помнишь я говорил про нуль-символ который записывается после string1 ? последнее значение выводится правильно благодаря ему

Код
 
#include <stdio.h>

/* читает строковую константу */
main()
{
    char *s = "some_ok";
    
    printf("%c%c\n", s[5], s[6]);
    printf("%c%c\n", *(s+5), *(s+6));
    printf("%s\n", s+5);
    return 0;
}
0
05.02.2009, 00:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2009, 00:17
Привет! Вот еще темы с ответами:

Указатели и строки - C++
Здравствуйте. Учу указатели (и строки); появилась куча неясных мне моментов, поэтому прошу разъяснения. 1) const char* obj...

Указатели на строки - C++
Доброго всем времени суток! Не понимаю почему указатели на строки возвращают всю строку char может содержать только один символ в...

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

Указатели и строки - C++
Здравствуйте! Помогите решить такую задачу Найти в строке последовательности , состоящие из одного повтопяющегося символа, и заменить его...


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

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

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