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

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

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

А вот как такое же проделать с седьмым символом st1?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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';
Ensase
Флудер
 Аватар для 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';
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
04.02.2009, 16:58     указатели и строки? #4
YurA_280784, и твой компелятор на этот код
C++
1
str1[i] = 'SomeSymbol';
не ругатся????
Zaratystra
 Аватар для Zaratystra
0 / 0 / 0
Регистрация: 04.02.2009
Сообщений: 5
04.02.2009, 17:08     указатели и строки? #5
*st1 указывает на нулевой элемент, т.е. "s".
Чтобы указать на следующий элемент нужно записать *(st1+1) и т.д.
*(st1+i)
Vourhey
Почетный модератор
6470 / 2245 / 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';
Дурной тон программирования
YurA_280784
Заблокирован
04.02.2009, 17:46     указатели и строки? #7
Короче привожу мой код, я его слегонца трансформировал.Кидаю рабочий проект и скриншот...Кстати ISergey научись ставить Release конфигурацию, а потом пиши
Миниатюры
указатели и строки?  
Вложения
Тип файла: rar tst6.rar (18.7 Кб, 18 просмотров)
YurA_280784
Заблокирован
04.02.2009, 17:47     указатели и строки? #8
Лучше б не над строками пыхтели, а реально ответили на мою просьбочку в разделе Вижуал....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2009, 00:17     указатели и строки?
Еще ссылки по теме:

C++ Указатели на строки
C++ Указатели и строки
C++ Указатели и строки
Строки и указатели в C++ C++
C++ Указатели на строки

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 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;
}
Yandex
Объявления
05.02.2009, 00:17     указатели и строки?
Ответ Создать тему
Опции темы

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