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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2015, 19:58   #1
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию Указатели, примеры и решения

Все ли указатели верно прокомментированны и реализованы?
Код:
char a = 'a';
char *b = &a;      //указатель на символ
int x[10];
int *z = &x[10]; //указатель на массив 10 целых
int &xz = x[10]; //ссылка на массив 10 целых
string s = "Massiv simvolov";
string *s1 = &s; //указатель на массив символьных строк
char *v = b;  //указатель на указатель на символ
const int  y = 2; //целая константа
const int *q = &y; //указатель на целую константу
int* const o = y;  //константный указатель на целое

std::cout<<&a<<"\t"<<b<<"\t"<<v<<"\n";
std::cout<<z<<"\t"<<&x[10]<<"\t"<<&xz<<"\n";
std::cout<<&s<<"\t"<<&s1<<"\n";
std::cout<<&y<<"\t"<<q<<"\t"<<o<<"\t"<<"\n";
P.s.: последний указатель не получился.
Dima-91 вне форума Ответить с цитированием
Старый 17.09.2015, 20:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
string s = "Massiv simvolov";
Я бы не сказал так.
Цитата:
string *s1 = &s; //указатель на массив символьных строк
Не правильно.
Цитата:
char *v = b; //указатель на указатель на символ
Нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2015, 20:19   #3
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

а компилятор спросить?

char *v = b; //указатель на указатель на символ
это кстати ОК


int *z = &x[10]; //указатель на массив 10 целых
int &xz = x[10]; //ссылка на массив 10 целых
string s = "Massiv simvolov";
string *s1 = &s; //указатель на массив символьных строк
int* const o = y; //константный указатель на целое

а это все какая-то херня, на мой взгляд.

int *z - указатель на целое
int &xz - ссылка на целое, ссылка на массив будет int (&xz)[10]
string *s1 - указатель на string
int* const o = (int *)25;

Последний раз редактировалось f.hump; 17.09.2015 в 20:28.
f.hump вне форума Ответить с цитированием
Старый 17.09.2015, 21:12   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это кстати ОК
Что ок?
Обьясни мне где тут указатель на указатель:
Безымянный.jpg
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.09.2015, 21:24   #5
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

да, действительно. первый "укзатель на" я не заметил, и подумал про еще один указатель на символ.
my bad.
f.hump вне форума Ответить с цитированием
Старый 17.09.2015, 21:36   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
my bad.
Бывает )
Зато ты насчет компиля четко сказал. Так что ничья )))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2015, 12:28   #7
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Код:
1)char *a; // указатель на символ
2)int x[10]; // массив целых
3)int* z[10];   //указатель на массив 10 целых
4)int (&xz)[10];  //ссылка на массив 10 целых
char str[]= "qwertyasdfghzxcvb";
5)char *str1 = str; //указатель на массив символьных строк
6)char** v; //указатель на указатель на символ
7)const int  y = 2; //целая константа
8)const int *q; //указатель на целую константу
9)int* const t; //константный указатель на целое
Верно получилось? Компилятором не получается скомпилировать 4 строку.
Заменил 4 на: int (&xz)= x[10]; где xz - ссылка на массив 10 целых.
Если Вам не сложно, ответ в таком виде
Код:
1) да
2)да
...
9)нет
Или Ваши мысли по поводу 9 пунктов.

Цитата:
Сообщение от f.hump Посмотреть сообщение
а компилятор спросить?
Как понять "спросить компилятор"?

Последний раз редактировалось Stilet; 18.09.2015 в 14:48.
Dima-91 вне форума Ответить с цитированием
Старый 18.09.2015, 12:44   #8
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Цитата:
Как понять "спросить компилятор"?
сделать прстой HelloWord, как Stilet, поставить туда все интересные декларации, инициализировать их чем-то, и компилятор даст все да/нет еще и с пояснениями.

к примеру,
Цитата:
Компилятором не получается скомпилировать 4 строку.
у меня компилятор говорит "references must be initialized"

1) да
2) да
3) нет
4) да
5) нет
6) да
7) да
8) да
9) да




в целом декларации указателей читаются справа на лево:

char** v

v
* - указатель на
* - указатель на
char

int* z[10]

z[10] - массив
* - указателей на
int

Последний раз редактировалось f.hump; 18.09.2015 в 12:50.
f.hump вне форума Ответить с цитированием
Старый 18.09.2015, 14:36   #9
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Код:
int x[10];
int* z = x; //указатель на массив 10 целых
Если так расписать? z указывает на int z = x.

Последний раз редактировалось Stilet; 18.09.2015 в 16:52.
Dima-91 вне форума Ответить с цитированием
Старый 18.09.2015, 14:49   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
5)char *str1 = str; //указатель на массив символьных строк
Нет...........
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Примеры по C# nwhta C# (си шарп) 7 02.10.2013 17:06
Примеры решения и классификация задач на Паскаль Белка лесная Паскаль, Turbo Pascal, PascalABC.NET 3 16.04.2012 15:51
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39