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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2012, 10:24   #1
spinogryz_ua
Форумчанин
 
Аватар для spinogryz_ua
 
Регистрация: 14.01.2012
Сообщений: 150
По умолчанию Указатели C++

Почему в прпограме работает не обьявленый ранее указатель?

Код:
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
const n=16;
void main()
{srand(time(NULL));
int i,in2;
float a[n],min;

for(i=0;i<n;i++)
{
*(a+i)=rand()/100.;
printf("a[%d]=%2.1f \n",i,*(a+i));
}
printf("\n\n");
printf("Minimalnuy element:\n");

min=a[0];
for (i=0;i<n;i++)
{
if (*(a+i)<min)
{
min=*(a+i);
in2=i;
}
}
printf("%3.1f ego index[%d] \n\n",min,in2);
}
spinogryz_ua вне форума Ответить с цитированием
Старый 01.10.2012, 10:28   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

в этой программе вообще нет указателей
Rififi вне форума Ответить с цитированием
Старый 01.10.2012, 10:33   #3
spinogryz_ua
Форумчанин
 
Аватар для spinogryz_ua
 
Регистрация: 14.01.2012
Сообщений: 150
По умолчанию

Код:
*(a+i)
а что тогда это?
spinogryz_ua вне форума Ответить с цитированием
Старый 01.10.2012, 11:03   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

Во-первых, указатель есть
Во-вторых, он объявлен вами же

Не забываем, что имя массива есть указатель на первый его элемент.

Цитата:
а что тогда это?
арифметика указателей + разыменование
p51x вне форума Ответить с цитированием
Старый 01.10.2012, 11:09   #5
spinogryz_ua
Форумчанин
 
Аватар для spinogryz_ua
 
Регистрация: 14.01.2012
Сообщений: 150
По умолчанию

Ну если имя массива есть указатель на первый его элемент, тогда зачем использовать " * "?
spinogryz_ua вне форума Ответить с цитированием
Старый 01.10.2012, 11:20   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Если не брать *, то операция будет не с числом, а с указателем на это число
eoln вне форума Ответить с цитированием
Старый 01.10.2012, 11:26   #7
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

spinogryz_ua

*(a+i)

а что тогда это?


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

Ну если имя массива есть указатель на первый его элемент, тогда зачем использовать " * "?

фраза про "Не забываем, что имя массива есть указатель на первый его элемент." - это бред

Код:
void f(int** p) {}

int main()
{
   int a[10];
   f(&a);
}
следуя этой "логике", в функцию f должен быть передан "адрес указателя на первый элемент".
Попробуй скомпилировать, подумай над полученными результатами.
Rififi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели GrihaI Общие вопросы C/C++ 11 06.05.2010 18:53
указатели в С++ Aleksa_ks Помощь студентам 3 27.04.2010 19:31
C++ указатели. tshen Помощь студентам 3 16.04.2010 22:00
Указатели Mighty Помощь студентам 1 24.10.2009 18:01
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39