Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Про указатели, помогите пожалуйста разобраться 
V
    Опции темы
C/L
Дата 26.2.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 31.7.2004
Где: Самара

Репутация: нет
Всего: 1



Цитата(Carnivore @  26.2.2009,  16:05 Найти цитируемый пост)
Цитата(C/L @  26.2.2009,  13:49 )
В С++ массив и указатель одно и то же


А вот и нет    

Ну может и не совсем. Я имел ввиду синтаксически
Код

int* a = new int[3];
*a = 3; // что так
a[0] = 3; //что так

PM MAIL WWW ICQ   Вверх
TiKKi
Дата 26.2.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 13.5.2006

Репутация: нет
Всего: 2



Массив есть массив, а его имя - это просто указатель на его первый элемент. Указатель и массив это совсем не одно и тоже!
PM   Вверх
C/L
Дата 26.2.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 31.7.2004
Где: Самара

Репутация: нет
Всего: 1



Цитата(TiKKi @  26.2.2009,  16:22 Найти цитируемый пост)
это просто указатель на его первый элемент

ну совсем не просто и не совсем только первый
Код

int* a = new int[3];
*a = 1;
a++;
*a = 2;
a++;
*a = 3;

PM MAIL WWW ICQ   Вверх
seravr
Дата 26.2.2009, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 3.1.2009

Репутация: нет
Всего: нет



Друзья, спасибо Всем

Добавлено через 2 минуты и 26 секунд
Цитата(C/L @ 26.2.2009,  13:30)
    ......
    delete data[];

только надо delete [] data;
PM MAIL   Вверх
TiKKi
Дата 26.2.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 13.5.2006

Репутация: нет
Всего: 2



Цитата(C/L @ 26.2.2009,  14:31)
Цитата(TiKKi @  26.2.2009,  16:22 Найти цитируемый пост)
это просто указатель на его первый элемент

ну совсем не просто и не совсем только первый
Код

int* a = new int[3];
*a = 1;
a++;
*a = 2;
a++;
*a = 3;

Вы это к чему?
Код

int a[10]; // массив
int* b = new int[10]; // указатель
// sizeof( a ) != sizeof( b )  

Его имя (массива) - это просто указатель на его первый элемент.

PM   Вверх
Dmi3ev
Дата 26.2.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

В С++ массив и указатель одно и то же. Массив = указателю на первый элемент

Одно и то же в С++ называется одинаково... Массив=Массив, Указатель=Указатель...
Цитата

ну совсем не просто и не совсем только первый

а это уже твое дело, куда его заставить указывать, но сначала он указывает элемент с индексом (0) (0)... А дальше дело за тобой, у тебя вон как ловко получается  smile 
Цитата

int* a = new int[3];
*a = 1;
a++;
*a = 2;
a++;
*a = 3;



Это сообщение отредактировал(а) Dmi3ev - 26.2.2009, 15:00


--------------------

PM MAIL   Вверх
seravr
Дата 26.2.2009, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 3.1.2009

Репутация: нет
Всего: нет



Цитата(C/L @ 26.2.2009,  14:13)
Цитата(Carnivore @  26.2.2009,  16:05 Найти цитируемый пост)
Цитата(C/L @  26.2.2009,  13:49 )
В С++ массив и указатель одно и то же


А вот и нет    

Ну может и не совсем. Я имел ввиду синтаксически
Код

int* a = new int[3];
*a = 3; // что так
a[0] = 3; //что так

добавлю:

можно еще и так:

0[a] = 3; 
1[a] = 2; 
.
.
.
n[a] = 7; 
PM MAIL   Вверх
zim22
Дата 26.2.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(seravr @  26.2.2009,  15:04 Найти цитируемый пост)
можно еще и так:

можно, но не нужно.


--------------------
PM MAIL   Вверх
seravr
Дата 26.2.2009, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 3.1.2009

Репутация: нет
Всего: нет



Цитата(Dmi3ev @ 26.2.2009,  14:04)
возьмем для примера массив 4х3, чтобы не было квадратика, а то не поймешь...
Код

int n=4;
int m=3;

int **a;//просто создали указатель

a=new int*[m];//можно сказать (для понимания), что выделили память под столбцы



скажите пожалуйста, в этой строке int **a имеется ввиду (int *) *a
т.е. указатель на тип int* 
PM MAIL   Вверх
kosmonaFFFt
Дата 26.2.2009, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



ага, указатель на (указатель на инт)


--------------------
user posted image
PM MAIL ICQ   Вверх
Dmi3ev
Дата 26.2.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



не знаю как объяснить, может это поможет, постарался показать, что можно и выделить память, а можно и ...
Код

int main()
{
    const int n=4;
    const int m=3;
    
    int *a;
    a=new int[n];

    int *b;
    b=new int[n];

    int *c;
    c=new int[n];
    
    for (int i=0; i<n; i++)
    {
        a[i]=1;
        b[i]=2;
        c[i]=3;
    }

    int **myarray;
    myarray=new int*[m];
    
    myarray[0]=a;
    myarray[1]=b;
    myarray[2]=c;
    
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
        {
         cout<<*(*(myarray+j)+i)<<"; ";
        }
        cout<<endl;
    }

    system("pause");
    return 0;
}


Добавлено @ 16:00
seravr, попробуй посмотреть эту прогу, должно начать доходить, что такое указатели...

Это сообщение отредактировал(а) Dmi3ev - 26.2.2009, 16:07


--------------------

PM MAIL   Вверх
seravr
Дата 26.2.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 3.1.2009

Репутация: нет
Всего: нет



Dmi3ev, очень благодарен, спасибо большое
PM MAIL   Вверх
Dmi3ev
Дата 26.2.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



опечаточка была в проге, теперь все ок  smile 


--------------------

PM MAIL   Вверх
pan2004
Дата 26.2.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 2
Всего: 9



к new неплохо бы и delete добавить:
Код

int main()
{
 ...
 // Так как вся выделенная память доступна через myarray удаляем только его
 delete [] myarray[0]; // аналогично delete a;
 delete [] myarray[1];
 delete [] myarray[2];
 //теперь можно и 
 delete [] myarray;
}



--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
C/L
Дата 26.2.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 31.7.2004
Где: Самара

Репутация: нет
Всего: 1



Признаю не прав. Указатель и массив не одно и тоже. Правильнее сказать что во многих случаях массив можно использовать как указатель а указатель как массив.
PM MAIL WWW ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0852 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.