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

Указатели на строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обращение к перегруженному оператору () через указатель на объект http://www.cyberforum.ru/cpp-beginners/thread635342.html
Собственно, как? class MyClass { .. void operator() (int _i) { cout << "operator()" << _i << endl; } };
C++ Изменение свойств кнопки из обработчика таймера Есть функция обработчик таймера, необходимо из этой функции вызвать PerformClick кнопки, как это сделать. Функция обработчик таймера объявлена как static, что бы обратиться к свойствам кнопки её тоже... http://www.cyberforum.ru/cpp-beginners/thread635338.html
Наследование объекта C++
Народ, помогите пожалуйста. Вопрос в следующем. Есть абстрактный базовый класс BaseClass, в нем объявлен объект Timer класса TTimer, который, в свою очередь имеет свои методы (Start(), Match(), и...
Чтение из файла. Повторное чтение файла C++
Добрый день. Необходимо реализовать в программе функцию повторного чтения данных из файла, в случае некорректного ввода их в оный. Вот пример, программа читает файл и находит число 6, в случае ошибки...
C++ Удаление структуры из файла http://www.cyberforum.ru/cpp-beginners/thread635302.html
Всем привет. У меня такая ситуация: записываю в бинарный файл заполненную структуру. Потом пользователь "удаляет" ее путем обнуления данных, при этом в файле со временем накапливается много "пустых"...
C++ Конструктор: задать значения переменным-членам как я понял проблема в том, что после инициализации указателя ссылкой, указатель становиться неправильным, как можно исправить? И как в конструкторе можно указать следующее(если можно) pstring = New... подробнее

Показать сообщение отдельно
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127

Указатели на строки - C++

09.08.2012, 17:56. Просмотров 379. Ответов 2
Метки (Все метки)

Есть следующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Strings // класс с указателями на строки (размер которого равен 8) 
{
public:
    char* str1;
    char* str2;
   Strings()
   {
        memset(this,0,sizeof *this);
  };
 
};
Strings MS; // объект класса
char strings[4][20]; // сами строки
strcpy_s(strings[0],"123456789");
strcpy_s(strings[1],"abcdetfff");
MS.str1=strings[0]; // присваиваем указатели
MS.str2=strings[1];
// теперь нужно вывести строки на экран по их указателям
for (int i=0;i<2;i++){
   char* ps=*(&MS.str1+i*4); // адрес строки, добавляя смещение
  printf("addr1: %lld\n",(long long)ps);
   printf("address of string : %lld, address of pointer: %lld, %d : %s\n",(long long)strings[i],(long long)&MS.adx1+4*i,i,ps);
    }
Вывод получается такой:
первая итерация:
Код
addr1: 1637736
address of string : 1637736, address of pointer : 1637432, 0: 123456789
вторая:
Код
addr1: 48
Дальше понятное дело, происходит необработанное исключение, т.к. программа пытается вывести строку по этому адресу и отладчик отправяет меня в файл output.c
Никак не могу понять, в чем может быть дело. Может кто подскажет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru