Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

поинтеры

1.8K
05 апреля 2006 года
pod
144 / / 05.04.2006
здарова мужики
я тут с поинтеами начал возитса и .....
кароче тут у меня кое кокое "недорозумение"

int a;
int *aPtr;
это int *aPtr, типо переменная которая может получать только значения адресов?

и тогда кокая разница между & и *.

и куда нам укажт или чего даёт *&aPtr и &*aPtr

блогодорю зарание
9.4K
05 апреля 2006 года
Savoy
47 / / 04.04.2006
Цитата:
Originally posted by pod
здарова мужики
я тут с поинтеами начал возитса и .....
кароче тут у меня кое кокое "недорозумение"

int a;
int *aPtr;
это int *aPtr, типо переменная которая может получать только значения адресов?

и тогда кокая разница между & и *.

и куда нам укажт или чего даёт *&aPtr и &*aPtr

блогодорю зарание



при твоём объявлении( int *aPtr; ) aPtr - это переменная, которая может хранить адрес участка памяти, содержащего значение типа int.

& - операция взятия адреса.
* - разыменование, то есть получение значения хранящегося по адресу.

a = *aPtr; // переменной a присваиваешь значение, хранящееся по адресу aPtr.
aPtr = &a; // в переменную aPtr записываешь адрес переменной a.

а вообще почитай лучше где-нибудь, литературы дофига, работа с динамической памятью.
а то я щас тут понапишу ещё больше запутаешься)

1.8K
05 апреля 2006 года
pod
144 / / 05.04.2006
Цитата:

а вообще почитай лучше где-нибудь, литературы дофига, работа с динамической памятью.
а то я щас тут понапишу ещё больше запутаешься)


я вообшето этим и занемаюсь, сежу перед деителом и .....

а тебя то стоит отблогодорить прояснение этих малейших деталей было очень важно для меня.

это только начало, я тут пересмотрел с легка
тут ети ссылки и к масивам можно привезать и к функциям так что, я думаю что постепенно передо мной открываетса страна чудес.

9.4K
06 апреля 2006 года
Savoy
47 / / 04.04.2006
Да я сам Си не особо долго занимаюсь, а с ссылками ещё в паскале столкнулся, важная вещь..
Ну, удачи в освоении.
1.8K
09 апреля 2006 года
pod
144 / / 05.04.2006
вот тут то неразбериха:

когда я дою функции масив следущим образом:
void add(int B[][12])
{
++B[0][0];
}

в main он конечно же выдаёт увеличенный B[0][0],
а вроди я на него не ссылался и тогда если я в место массива
дам функции переменную типа int :
void add(int a)
{
++a;
}
по идеи должно сработать но это не так.
что тут происходит:
если я дою: void add(int* B[12]) понятно
я ссылаю его а так:
void add(int B[][12]) ???????????????????????
10K
09 апреля 2006 года
-Df-
24 / / 11.03.2006
Цитата:
Originally posted by pod
вот тут то неразбериха:

когда я дою функции масив следущим образом:
void add(int B[][12])
{
++B[0][0];
}

в main он конечно же выдаёт увеличенный B[0][0],
а вроди я на него не ссылался и тогда если я в место массива
дам функции переменную типа int :
void add(int a)
{
++a;
}
по идеи должно сработать но это не так.
что тут происходит:
если я дою: void add(int* B[12]) понятно
я ссылаю его а так:
void add(int B[][12]) ???????????????????????


Не совсем понял, что ты хочешь.. Если тебе нужно увеличить переменную а, то объяви в функции передачу по адресу:
void add(int &a)

1.8K
10 апреля 2006 года
pod
144 / / 05.04.2006
Цитата:
Originally posted by -Df-
Не совсем понял, что ты хочешь.. Если тебе нужно увеличить переменную а, то объяви в функции передачу по адресу:
void add(int &a)



нет
как увеличить данную я то знаю, я хотел добратса до сути, если я передою int B[][12] по идее функциа должна же создать его копию а она прямо на эту переменную идёт

1.8K
24 апреля 2006 года
pod
144 / / 05.04.2006
почемуто microsoft visual C++ не очень то любит
обявление: char* s;
пока я не присваиваю s начальное значение,
любое обращение к нему, функцией или оператором, приводит меня
к следующей фразе:
NullReferenceException: Object reference not set to an instance of an object.
1.8K
14 мая 2006 года
pod
144 / / 05.04.2006
мдаааааа
вот опять :(
по моему этот язык не очень то любит поинтеры.
пишу такую вещ:

Цитата:

# include <iostream>
using namespace std;

class test{
public:
test (int=0);
void print() const;

private:
int x;
};

test::test(int value)
: x(value)
{
}

void test::print() const
{
cout<<" x=" <<x;
cout<<"\n this->x=" <<this->x;
cout<<"\n (*this).x=" <<(*this).x <<endl;
}

int mian()
{
test testobject(12);

testobject.print();
return 0;
}



с компиляцией проблем нет но когда дело идёт о выполнении дела вот что выдаёт:
LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
D:\My programs\deitel\examples\7.13\Debug\7.13.exe : fatal error LNK1120: 1 unresolved externals

242
14 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by pod
нет
как увеличить данную я то знаю, я хотел добратса до сути, если я передою int B[][12] по идее функциа должна же создать его копию а она прямо на эту переменную идёт



массивы, в С по меньшей мере, и не только в С, передаются
по ссылке(адрессу). никаких копий. массив и указатель это
из одной истории.
когда речь идет о простой переменной (int а, char а, ...) то
такие переменные передаются по значению ( namefunction(a); )

1.8K
08 сентября 2006 года
pod
144 / / 05.04.2006
я создал класс point
а потом сделал такое объявление в main():

point *pptr;
pptr=&point;

и на вторую строчку в ответ получил:
error C2275: 'point' : illegal use of this type as an expression

что неверно?
1.8K
08 сентября 2006 года
pod
144 / / 05.04.2006
принашу извинения за невнимательность
я сам нашёл ошибку
240
11 сентября 2006 года
aks
2.5K / / 14.07.2006
Цитата:

нет
как увеличить данную я то знаю, я хотел добратса до сути, если я передою int B[][12] по идее функциа должна же создать его копию а она прямо на эту переменную идёт


Ну тут OlgaKr правильно сказала, массив - это и есть указатель. Поэтому передавая массив (а на самом деле указатель) получаешь доступ к его даным.

Цитата:

почемуто microsoft visual C++ не очень то любит
обявление: char* s;
пока я не присваиваю s начальное значение,
любое обращение к нему, функцией или оператором, приводит меня
к следующей фразе:
NullReferenceException: Object reference not set to an instance of an object.


Во первых microsoft visual C++ тут не причем - это всего лишь инструмент. А ведет он себя вполне стандартно в этой ситуации.
А во вторых что же ты хочешь получить обращаясь к непроинициализированному указателю? Он указывает неизвестно куда (или в лучшем случае равен нулю), и обращатся к нему не имеет смысла просто, пока не проинициализировать его конкретным адресом.

Цитата:

мдаааааа
вот опять
по моему этот язык не очень то любит поинтеры.
пишу такую вещ:


Указатели тут не причем. У тебя названия неправильно неписанны - учись уже читать свой код.

Например не void test:rint() const, а print
И конечно не int mian(), а main
Собственно на это у тебя линкер и ругается - не может найти функцию main с которой начинается выполнение, вместо нее описанна функция mian =))
И еще - учись код по человечески оформлять. Придумывать понятные и сответсвующие своим функциям идентификаторы, классы например с большой буквы писать и т.п.
Самому понятней будет.

Цитата:

я создал класс point
а потом сделал такое объявление в main():

point *pptr;
pptr=&point;

и на вторую строчку в ответ получил:
error C2275: 'point' : illegal use of this type as an expression


point - это тип.
& - в данном контексте, оператор взятия адреса у переменной. Тоесть там должна быть переменная, а не тип. Какой адрес то у типа брать? =)
Тоесть правильно будет так:

 
Код:
point pval;
...
point *pptr;
pptr=&pval;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог