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

Указатели - в чем суть? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 155, средняя оценка - 4.64
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
22.11.2010, 17:24     Указатели - в чем суть? #1
Кто нибидь может мне обястнить укасзатели в С++,ато я некак не врубаюсь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
+c+
112 / 22 / 3
Регистрация: 20.11.2010
Сообщений: 1,294
22.11.2010, 17:33     Указатели - в чем суть? #2
указатель - это адрес какой-то переменной
C++
1
2
int i=5;
int *pI=&i;
теперь в pI находится адрес в памяти, к примеру(0043001) , адрес, по которому находится переменная i.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
22.11.2010, 17:39  [ТС]     Указатели - в чем суть? #3
+c+, а какие арефметичаские действа можно использовать для указателей?
pasha_9090
17 / 17 / 1
Регистрация: 17.11.2010
Сообщений: 84
22.11.2010, 17:40     Указатели - в чем суть? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
УКАЗАТЕЛИ

Указатель – это переменная, хранящая адрес некоторого данного (объекта).
Память компьютера делится на 8-битовые байты. Каждый байт пронумерован, нумерация байт начинается с нуля. Номер байта называют адресом; об адресе говорят, что он указывает на определенный байт.

Таким образом, указатель является просто адресом байта памяти компьютера.

Использование указателей в программах на С позволяет:

1. Упростить работу с массивами;
2. Распределять память под данные динамически, то есть в процессе исполнения программы;
3. Выполнить запись и чтение данных в любом месте памяти.

Значение указателя сообщает о том, где размещен объект.

Объявление указателей

Указатели, как и другие переменные, должны быть объявлены в программе. При объявлении указателя перед его именем ставится *. В общем случае объявление переменной – указателя имеет вид:

класс памяти тип * имя ;

• означает “указатель на “.

Например,
C++
1
int  * iptr;
iptr - это указатель на объект типа int. Этим объектом может быть простая переменная, типа int, массив элементов типа int или блок памяти, полученный, например, при динамическом распределении памяти.

Другие примеры объявления указателей:

C++
1
2
3
static   float  *f;
extern double *z;
extern char *ch;
Каждое из этих объявлений выделяет память для переменной типа указатель, но каждый из указателей пока ни на что не указывает

До тех пор, пока указателю не будет присвоен адрес какого – либо объекта, его нельзя использовать в программе.

Для получения адреса какого – либо объекта используется операция &. Эта операция позволяет присваивать указателям адреса объектов. Например:

C++
1
2
3
4
int a, *aptr;
char c, *cp;
aptr=&a;
cp=&c;
Доступ к объекту через указатель
Выполняется с помощью унарной операции *. Операция * называется операцией разадресации или операцией обращения по адресу. Операция * рассматривает свой операнд как адрес некоторого объекта и использует этот адрес для выборки содержимого. Другими словами, * означает “извлечь содержимое по адресу, на который указывает указатель.”
Для вывода адреса памяти, содержащегося в указателе, необходимо использовать спецификацию формата %p Значение адреса выводится в шестнадцатеричной системе счисления.

Пример 1. Программа, выводящая значение указателя и значение объекта, на который он указывает.

C++
1
2
3
4
5
6
  #include <stdio.h>
   void main (void)   {     int x, *px;
    px=&x;
    x=35;
     printf("адрес x: %p\n",&x);     printf("Значение указателя: %p\n",px);
     printf("Значение х: %d\n",x);      printf("Значение, адресуемое указателем: %d\n",*px);      }
Эта программа выводит следующее:
адрес x: FFF4
Значение указателя: FFF4
Значение х: 35
Значение, адресуемое указателем: 35

Связь между переменной х и указателем px схематично показана на рисунке1.

Переменная-указатель px Переменная х

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

C++
1
2
float y,  *py =&y;
*py= -1.2;
Здесь *py= -1.2 означает присвоение значения –1.2 по адресу, хранящемуся в указателе, то есть, то же, что и y = -1.2;

Инициализация указателей

Следует избегать использования в программе неинициализированных указателей. Всегда должен существовать объект, адрес которого содержит указатель. При этом указатель всегда должен указывать на объект того же типа, с которым он объявлен.
Примеры:

Правильно Не правильно





Ошибка заключена в том, что указателю на данное целого типа присваивается адре переменной вещественного типа, а это не допустимо.

Указатель на неопределенный тип

Существует специальный тип указателя, называемый указателем на неопределенный тип. Объявление такого указателя имеет вид:

void * имя;

Например,
C++
1
void *ptr;
Служебное слово void в объявлении указателя позволяет отсрочить определение типа объекта, на который он указывает.
Указатель на тип void может быть использован для ссылки на объект любого типа. Но для того, чтобы оперировать таким указателем в программе, необходимо явно задать тип в каждой операции с указателем. Для этого следует использовать операцию приведения типа указателя:
(тип *) указатель

Пример 2. Программа, в которой используется указатель на неопределенный тип

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
  void main (void)
  {
    int a =123;
    double d= 3.45678;
 
// объвление указателя на неопределенный тип
    void *vp;
 
//указатель на неопределенный тип инициализирован адресом объекта целого типа
    vp=&a;
//перед выводом значения объекта  целого типа , адресуемого указателем  vp, 
//   тип указателя   явно приводится к целому
    printf("a=%d \n", *((int *)vp));
//указатель на неопределенный тип инициализирован адресом объекта  типа double
vp=&d;
//перед выводом значения объекта  типа double , адресуемого указателем  vp, 
//   тип указателя   явно приводится к типу double
       printf("d=%lf \n", *((double *)vp));
 
     }
Эта программа выведет следующее:

a=123
d=3.456780

Следует отметить, что в программе, показанной в примере 2, ни одна операция не может быть выполнена над указателем vp до тех пор, пока явно не будет задан тип, на который он указывет!

Выражения с указателями

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

C++
1
2
3
4
5
6
7
8
9
{ int i=123 *pi1=&i,  *pi2;
 
// присваиваем указателю pi2 значение указателя pi1
 pi2=pi1;
 
//выведем значения  указателей:
printf(%p   %p”,  pi1, pi2);
 
}
В результате мы получим одно и то же значение адреса.

Указатели могут встречаться в выражениях, например:

C++
1
2
3
int  x=5, y, *px=&x;
 
y = *px + 5; // y получит значение 10
Приоритет у унарной операции разадресации * выше, чем у бинарных арифметических операций, поэтому при вычислении выражения *px + 5 вначале будет извлечено содержимое по адресу, хранящемуся в р ( то есть получено значение 5), а затем будет выполнена бинарная операция сложения.

Операции с указателями

С указателями можно использовать только следующие операции:

++ инкремента
- - декремента
+, - сложения и вычитания
Если к указателю применяются операции ++ или --, то указатель увеличивается или уменьшается на размер объекта, который он адресует:

тип *ptr;

ptr ++ = значение ptr + sizeof (тип)

ptr -- = значение ptr - sizeof (тип)

Например:

C++
1
2
int i, *pi = &i;
float a, *pa =&a;
pi++; //значение указателя pi увеличивается на 2 байта, так как он адресует объект
//типа int, указатель сдвигается вправо на 2 байта

pa++; // значение указателя pa увеличивается на 4 байта, так как он адресует объект
//типа float, указатель сдвигается вправо на 4 байта

Одним из операндов операции сложения может быть указатель, другим должно быть целое число. Целое число складывается с указателем следующим образом:

тип *ptr;

int n;

ptr + n = значение ptr + n*размер типа

Например,

C++
1
2
float  a, *pa = &a;
pa = pa+3; // значение указателя pa будет увеличено на 12 байт (сдвиг указателя вправо)
Левым операндом операции вычитания может быть указатель, а правым операндом должно быть целое число:

тип *ptr;

int n;

ptr - n = значение ptr - n*размер типа

Например:

C++
1
2
int i, *pi = &i;
pi=pi-5; // уменьшение значения указателя на 10 байт (сдвиг указателя влево)

Пример 3.Использование указателей в выражениях

C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
void main (void) 
{
  int x=5,y,*px=&x;  //указатель px инициализирован адресом переменной x
 
  y=*px+5;     printf("y=%d значение указателя=%p\n",y,px);
   y=*px++;   //изменение значения указателя после его использования    printf("y=%d значение указателя=%p\n",y,px);
    px=&x;    y=(*px)++;   //изменение содержимого по адресу, хранящемуся в px
     printf("y=%d значение указателя=%p значение, адресуемое указателем *px= %d\n",y,px,*px);
    y=++*px;   //изменение содержимого по адресу px на единицу    printf("y=%d значение указателя=%p\n",y,px);     }
Результаты работы этой программы имеют вид:
y=10 значение указателя=1561:1000
y=5 значение указателя=1561:1002
y=5 значение указателя=1561:1000 значение, адресуемое указателем*px= 6
y=7 значение указателя=1561:1000
+c+
112 / 22 / 3
Регистрация: 20.11.2010
Сообщений: 1,294
22.11.2010, 18:12     Указатели - в чем суть? #5
C++
1
2
3
4
5
6
7
8
9
10
char s[]="hello";
char *p=&s[3];    //указатель p указывает на символ "l"
cout << *p << endl;    //вывод этого символа. Если без "*",то выведет адрес, где рассположен этот символ
p++;    //инкремент на одно значение, теперь указывает на сл-й символ
cout << *p << endl;
int i[]={1,2,3,4};
int *pI=&i[2];    // pI указывает на 3
cout << *pI << endl;
pI++;    //инкремент на одно значение, теперь указывает на 4
cout << *pI << endl;
В данном случае инкремент зависел от типа значения( int,char) . Для char инкремент увеличивает указатель на один байт. Для int увеличивает на 4 байта! А сам указатель 4 байта (в зависимости от компиля)
me4ta
0 / 0 / 0
Регистрация: 06.03.2013
Сообщений: 3
18.03.2013, 00:29     Указатели - в чем суть? #6
Подскажите, можно ли сравнивать значения указателей?
C++
1
2
3
4
int *a, *b;
*a=300;
*b=30;
if(*a>*b)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
18.03.2013, 00:42     Указатели - в чем суть? #7
Цитата Сообщение от me4ta Посмотреть сообщение
можно ли сравнивать значения указателей?
Можно.
У Вас сравниваются значения лежащие в памяти на которую указывают указатели.
В данном случае указатели не инициализированы и указывают неизвестно куда
Lemix Troil
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 7
22.10.2013, 18:50     Указатели - в чем суть? #8
Вот тоже разбираюсь с указателями.
И один вопрос: а зачем всё это нужно? Приведите, пожалуйста, примеры полезного использования указателей.
Мортулус
Сообщений: n/a
18.11.2013, 13:24     Указатели - в чем суть? #9
Можно вопрос: что означает, к примеру строка ***ptr? Везде искал, не могу разобраться.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.11.2013, 13:35     Указатели - в чем суть? #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от +c+ Посмотреть сообщение
указатель - это адрес какой-то переменной
Нет. Указатель - это данное, хранящее адрес, а адрес - значение указателя. И почему сразу переменной? Это может быть и адрес функции, или константы, хранимой в ячейке в виде данного вместо встраивания в компилированную версию в виде части кода, такая константа от переменной отличается только тем, что её значение нельзя менять в рантайме.

Добавлено через 1 минуту
Цитата Сообщение от Мортулус Посмотреть сообщение
к примеру строка ***ptr? Везде искал, не могу разобраться.
Это значит тройной указатель, то есть указатель на указатель на указатель. Указатели на указатели имеют общее название кратных указателей, кратность такова, сколько указателей надо перебрать, пока доберёшься до не указателя. Указатели на не указатели называются простыми указателями.

Добавлено через 2 минуты
Цитата Сообщение от Lemix Troil Посмотреть сообщение
Вот тоже разбираюсь с указателями.
И один вопрос: а зачем всё это нужно? Приведите, пожалуйста, примеры полезного использования указателей.
Указатель нужен для того, чтоб одним идентификатором поименовать большой блок заранее не известного размера, или связать два элемента списка, или чтоб сообщить функции, где лежит её параметр, чтоб она могла его изменить не в копии внутри себя, а в вызывающей программе.
ПерС
366 / 282 / 84
Регистрация: 05.11.2013
Сообщений: 806
Записей в блоге: 5
Завершенные тесты: 1
18.11.2013, 13:40     Указатели - в чем суть? #11
Цитата Сообщение от Мортулус Посмотреть сообщение
Можно вопрос: что означает, к примеру строка ***ptr? Везде искал, не могу разобраться.
например, это может означать будущую динамическую матрицу из строк переменной длины
законченный пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <bios.h>
#include <alloc.h>
 
void pause () {
 printf ("\n Press any key to continue");
 fflush (stdin);
 while (!bioskey(1));
}
 
void error (int n) {
 unsigned char *msg;
 switch (n) {
  case 1: msg = "No memory";
  break;
  default: msg = "Unknown error";
 }
 printf ("\nError: %s",msg);
 pause ();
 exit (n);
}
 
void main () {
 unsigned char ***a=NULL;
  //a - указатель на массив указателей на строки матрицы.
  //Так как элементами матрицы тоже будут указатели на строки-элементы,
  //необходимо три звездочки
 int const n=2,m=2; //число строк и столбцов матрицы
 a = (unsigned char ***) malloc (n*sizeof(unsigned char **));
  //Выделяем память под массив указателей на строки матрицы
 if (a==NULL) error (1);
 int i,j,l;
 for (i=0; i<n; i++) {
  a[i] = (unsigned char **) malloc (m*sizeof(unsigned char *));
  //Выделяем память под каждую строку - массив указателй на элементы
  if (a[i]==NULL) error (1);
 }
 
 //Заполняем матрицу вводом с клавиатуры
 unsigned char buf[80];
 for (i=0; i<n; i++)
 for (j=0; j<m; j++) {
  printf ("\n Enter string for a[%d,%d]:",i,j);
  fflush (stdin);
  fgets (buf,78,stdin); //scanf лучше не использовать для ввода строк
  l=strlen(buf);
  buf[--l]='\0'; //но fgets оставит в конце перевод строки, уберем его
  a[i][j] = (unsigned char *) malloc (l*sizeof(unsigned char));
   //выделяем память под очередной элемент в зависимости от
   //длины буфера
  if (a[i][j]==NULL) error (1);
  strcpy (a[i][j],buf); //копируем буфер в элемент матрицы строк
 }
 //Выводим полученную матрицу на экран консоли
 printf ("\n String matrix:");
 for (i=0; i<n; i++) {
  fputs ("\n",stdout);
  for (j=0; j<m; j++) {
   fputs (a[i][j],stdout);
   fputs ("\t",stdout);
  }
 }
 pause ();
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.11.2013, 13:40     Указатели - в чем суть? #12
Кроме того, массивы реализуются на неявных указателях. А ещё указателем можно перебирать в цикле элементы контейнера.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
 int a[10]={1, 2, 6, 3, 4, 0, 8, 92, 13, 2};
 int  *p;
 /* Перебор и удвоение элементов массива: */
 for (p=a+9; p>=a; --p)
 {
  *p*=2; 
 }
  /* Перебор и вывод на экран элементов массива: */
 for (p=a; p<a+10; ++p)
 {
  std::cout<<*p<<std::endl;
 }
 return 0;
}
. В случае другого контейнера просто меняется алгоритм изменения указателя.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
18.11.2013, 13:42     Указатели - в чем суть? #13
Цитата Сообщение от Croessmah Посмотреть сообщение
У Вас сравниваются значения лежащие в памяти на которую указывают указатели.
Можно кстати еще и сравнивать непосредственно сами значения указателей, если, к примеру, они указывают на элементы одного и того же массива.
Просто так. Мысли вслух.

Цитата Сообщение от Мортулус Посмотреть сообщение
что означает, к примеру строка ***ptr?
Указатель на указатель на указатель.

Цитата Сообщение от Lemix Troil Посмотреть сообщение
Приведите, пожалуйста, примеры полезного использования указателей.
К примеру чтобы запутывать врага:
C++
1
2
3
4
int *_i;
int i_ = 3;
_i = &i_;
i_*=i_**_i;
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.11.2013, 13:42     Указатели - в чем суть? #14
Цитата Сообщение от ПерС Посмотреть сообщение
например, это может означать будущую динамическую матрицу из строк переменной длины
Нифига подобного. Массив матриц это может означать, но ни как не отдельную матрицу. Ещё это может быть тензор. Или просто трёхмерный массив. Что угодно, но только не плоская матрица и не одномерный вектор.
ПерС
366 / 282 / 84
Регистрация: 05.11.2013
Сообщений: 806
Записей в блоге: 5
Завершенные тесты: 1
18.11.2013, 13:45     Указатели - в чем суть? #15
Цитата Сообщение от Lemix Troil Посмотреть сообщение
Вот тоже разбираюсь с указателями.
И один вопрос: а зачем всё это нужно? Приведите, пожалуйста, примеры полезного использования указателей.
как минимум,
работа с массивами и строками;
управление динамической памятью;
перегрузка функций;
работа со списками переменной длины;
любое ООП.
проще сказать, где не используются указатели, особенно при системном программировании
убери из C++ указатели - и останется Java, способная работать только внутри собственной виртуальной машины (которая, в свою очередь, написана на тех же "плюсах" с указателями
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.11.2013, 13:53     Указатели - в чем суть? #16
Цитата Сообщение от me4ta Посмотреть сообщение
Подскажите, можно ли сравнивать значения указателей?
Можно сравнить и значения двух указателей, и значения данных, на которые они указывают, то есть чьи адреса хранят. Можно даже сравнить значение указателя со значением данного, чей адрес хранит указатель большей кратности.

Добавлено через 31 секунду
Цитата Сообщение от ПерС Посмотреть сообщение
перегрузка функций;
Функции отлично перегружаются без указателей.

Добавлено через 37 секунд
Цитата Сообщение от ПерС Посмотреть сообщение
любое ООП.
ООП отлично пишется без указателей.

Добавлено через 2 минуты
Цитата Сообщение от ПерС Посмотреть сообщение
проще сказать, где не используются указатели, особенно при системном программировании
Для решения простейших задач и подзадач, не требующих изменения функцией её параметров, при условии, что количество данных задачи/подзадачи точно известно на этапе компиляции и ни одно из этих данных не является элементом массива.

Добавлено через 3 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Ещё это может быть тензор
Третьего ранга. Матрица же есть тензор второго ранга.
ПерС
366 / 282 / 84
Регистрация: 05.11.2013
Сообщений: 806
Записей в блоге: 5
Завершенные тесты: 1
18.11.2013, 14:09     Указатели - в чем суть? #17
Цитата Сообщение от taras atavin Посмотреть сообщение
Массив матриц это может означать, но ни как не отдельную матрицу
Выполнил пример в 2 средах.
убрал только устаревшее ожидание клавиши bioskey()
Он формирует и выводит на экран матрицу, элементами которой являются строки переменной длины.
Судя по коду, ничего другого он и не мог бы сделать.
Ошибок в коде не вижу.
скрин прогона проги:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 Enter string for a[0,1]:2222
 
 Enter string for a[0,2]:3 3 3 3 3 3 3 3
 
 Enter string for a[1,0]:4 4 4 4
 
 Enter string for a[1,1]:555
 
 Enter string for a[1,2]:666
 
 Enter string for a[2,0]:7 7 7
 
 Enter string for a[2,1]:8
 
 Enter string for a[2,2]:9999
 
 String matrix:
111 111 111     2222    3 3 3 3 3 3 3 3
4 4 4 4 555     666
7 7 7   8       9999
 Press any key to continue
Если быть более точным, исходный subj здесь означает двумерную матрицу с элементами-указателями, откуда и третья "*"
C++
1
2
char **a; //матрица символов, 2-мерная
char ***a; //матрица указателей на char, 2-мерная
но
C++
1
2
int **a; //2-мерная матрица целых
int ***a; //3-мерная матрица целых
Добавлено через 6 минут
Цитата Сообщение от taras atavin Посмотреть сообщение
не требующих изменения функцией её параметров
параметры функций можно менять без указателей. Ссылка & в заголовке
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.11.2013, 14:22     Указатели - в чем суть? #18
Цитата Сообщение от ПерС Посмотреть сообщение
параметры функций можно менять без указателей. Ссылка & в заголовке
Параметр-ссылка надстраивается над указателем, переменный адрес в такую функцию надо передать в любом случае, а адрес - значение указателя. Это ссылки аля
C++
1
2
3
4
5
int main ()
{
 int i;
 int &j=i;
 ...
можно реализовать дубль-записью в таблице переменных компилятора, а параметр-ссылка должен в разное время быть синонимом разных данных, что реализуется только укзателем.

Добавлено через 2 минуты
Цитата Сообщение от ПерС Посмотреть сообщение
char ***a; //матрица указателей на char, 2-мерная
Нет. Матрица есть математический объект, состоящий из чисел, а не указателей на символы. И строго двумерный.

Добавлено через 2 минуты
А это плоский массив нуль-терминальных строк, но ни как не матрица. Массив даже двумерный - не синоним матрицы. Матрица должна ещё по определённым алгоритмам складываться с себе подобными, умножаться на них и на скаляр, а квадратная матрица должна ещё иметь детерминант.
ПерС
366 / 282 / 84
Регистрация: 05.11.2013
Сообщений: 806
Записей в блоге: 5
Завершенные тесты: 1
19.11.2013, 05:59     Указатели - в чем суть? #19
Цитата Сообщение от taras atavin Посмотреть сообщение
А это плоский массив нуль-терминальных строк, но ни как не матрица
Ладно, Вас не переспоришь, +1 за дотошность
Определение "Таблица нуль-терминальных строк" Вас устроит?
И она здесь двумерна, т.к. положение каждой строки определяется двумя индексами.
Под матрицей я и имел в виду эту двумерность, а не матрицу как математический объект
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2013, 08:11     Указатели - в чем суть?
Еще ссылки по теме:

Алгоритмы поиска. Подскажите, в чем суть алгоритма? C++
C++ Циклы while и for: в чем суть отличия?

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

Или воспользуйтесь поиском по форуму:
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
19.11.2013, 08:11     Указатели - в чем суть? #20
Ребят,а можно подробней про двойные указатели?
Yandex
Объявления
19.11.2013, 08:11     Указатели - в чем суть?
Ответ Создать тему
Опции темы

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