Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2011, 11:40   #41
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
hp в стеке.
а pLink лишь указатель на объект.
если pLink указывает на объект hp, а указателю присваивается адрес области динамической памяти(notebook *pLink = new notebook(так в книге говорится), значит объект hp есть и в динамической памяти?
короче я не могу понять суть строки :
Код:
notebook *pLink = new notebook;
почему бы не сделать так, чтобы указатель хранил значение местоположения самого объекта hp?
halcyon вне форума Ответить с цитированием
Старый 04.10.2011, 11:46   #42
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
если pLink указывает на объект hp
не указывает он на это.
Код:
notebook *pLink = new notebook
тут мы создаем новый объект класса notebook в куче, и присваиваем pLink ссылку на созданный объект.
Цитата:
почему бы не сделать так, чтобы указатель хранил значение местоположения самого объекта hp?
а зачем?
у нас итак есть к нему доступ.

а том коде в итоге будет два объекта(а потом объект из кучи будет удален(delete pLink)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.10.2011, 08:13   #43
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Ну вот я и споткнулся, на примере из книги Джеса Либерти "С++ за 21 день" 233-234 страницы. Код программы, которая каким-то чудом построчно выводит введенные с клавиатуры слова:
Код:
#include <iostream>
#include <ctype.h>
#include <string.h>

bool  getWord(char *string, char *word, int &wordOffset);

using namespace std;

int main()
	{
		const int bufferSize = 255;
		char buffer[bufferSize + 1]; //переменная для хранения строки
		char word[bufferSize + 1]; // переменная для хранения слова
		int wordOffset = 0;// начинаем с первого символа

		cout << "enter the string: ";
		cin.getline(buffer, bufferSize); 

		while (getWord(buffer, word, wordOffset))
			{
				cout << "\n Got this word: " << word << endl;
			}

		system("pause");
		return 0;

	}

// функция для выделения слова из строки символов
bool getWord(char *string, char *word, int &wordOffset)
	{

		if (!string[wordOffset]) // каким то чудом определяет конец строки
			return false;

		char *p1, *p2;
		p1 = p2 = string + wordOffset;

		// удаление каких-то пробелов
		for(int i = 0; i < (int)strlen(p1) && !isalnum(p1[0]); i++)
			p1++;

		//првоерка  наличия слова
		if (!isalnum(p1[0])) // проверка наличия слова
			return false;

		//
		//
		p2 = p1;

		while (isalnum(p2[0]))
			p2++;

		int len = int (p2 - p1);

		strncpy(word, p1, len);

		word[len] = '\0';

		for (int i = int(p2 - string); i < (int)strlen(string) && !isalnum(p2[0]); i++)
			p2++;

		wordOffset = int(p2 - string);

		return true;
	}
просто в этой программе я не понял практически ничего, и многое не объяснено.
прежде в книге никогда не использовались квадратные скобки, для чего они служат, неизвестные операторы\слова\функции\чтоэто? - isulnum, strncpy, strlen.
функция getWord принимает в качестве значений, указатели, в которых хранятся адреса? или она принимает в кач-ве значений переменные на которые указывают указатели? пздц, я вообще запутался, взрыв мозга , крах и апокалипсис, надо резать вены.
halcyon вне форума Ответить с цитированием
Старый 05.10.2011, 09:09   #44
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
квадратные скобки, для чего они служат
Индексы массивов или строки.
Цитата:
isulnum, strncpy, strlen.
Первая вроде бы возвращает 0 если символ — цифра и не 0 если буква. гугл, кстати, рулит если непонятно для чего нужна неизвестная функция. cplusplus.com, msdn.com
strncpy — копирования части строки в другую строку, strlen — длина строки.

т.е. s1[4] — обращение к пятому символу строки (нумерация с нуля).
len = strlen(s1)
s1[len-1] — обращение к последнему символу строки (перед символом конца строки \0).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 05.10.2011 в 09:19.
Alex11223 вне форума Ответить с цитированием
Старый 06.10.2011, 10:59   #45
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Подскажите пожалуйста, как пользоваться отладочным режимом в VS2010? гугл не помог(
halcyon вне форума Ответить с цитированием
Старый 07.10.2011, 00:58   #46
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от halcyon Посмотреть сообщение
Подскажите пожалуйста, как пользоваться отладочным режимом в VS2010? гугл не помог(
Запустить отладку ?
F10 - F11
An1ka вне форума Ответить с цитированием
Старый 08.11.2011, 11:24   #47
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Ребята, помогите пожалуйста разобраться! Есть файл .txt, в котором числа представленны следующим образом:
Цитата:
1
40 90 15
2
80 120 20
3
180 167 9
1
50 100 19
2
140 160 23
3
200 185 12
каким образом можно считать и сравнить элементы файла? например 80 и 180, 180 и 50, 50 и 140 и т.д. сравнивание производится по столбцам.
halcyon вне форума Ответить с цитированием
Старый 29.11.2011, 09:53   #48
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

^^^ не актуально.
Подскажите почему такая ошибка и как ее решить:
Код:
#include <iostream>

using namespace std;

class cat
	{
		public:
			cat(int age): ctAge(age) { HowManyCats++;}
			virtual ~cat() { HowManyCats--;}
			virtual int getAge() const { return ctAge;}
			virtual void setAge(int age) { ctAge=age;}
			static int HowManyCats;
		private:
			int ctAge;
	};

int cat::HowManyCats = 0;

void TelepathicFunction();

int main()
	{
		const int MaxCats = 5; int i;
		cat *catHouse[MaxCats];
		for(i = 0; i < MaxCats; i++)
				catHouse[i] = new Cat(i);  // тут возникает эррор, подчеркивает Cat и Error: expected a type specifier
halcyon вне форума Ответить с цитированием
Старый 29.11.2011, 10:11   #49
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

Код:
catHouse[i] = new сat(i);
cat с маленькой буквы, потому что:

Код:
class cat
{
  ...
};
У вас странная нотация. Используйте лучше Паспкаль стиль, он довольно распространненный. Т.е. имена имена ф-ий и классов с большой буквы LikeThis, имена переменных - с маленькой likeThis. Имена переменных-мебмеров классов лучше тоже как-нибудь выделять по особому, напиример m_likeThis.
_Ч_ вне форума Ответить с цитированием
Старый 29.11.2011, 10:29   #50
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Цитата:
cat с маленькой буквы, потому что:
вот facepalm...
спасибо, последую Вашему совету.
halcyon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Первые шаги в Perl Phantom Perl 8 17.08.2018 18:18
Первые шаги к программированию ? DoobaLoop Свободное общение 5 03.10.2011 14:13
первые шаги в с++ ploik Общие вопросы C/C++ 2 16.07.2010 23:35
Первые шаги trave1er Общие вопросы C/C++ 2 10.09.2008 20:32
Первые шаги в VBA :) rustam_colpal Microsoft Office Excel 12 30.05.2008 09:27