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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 11:38   #1
jon888
 
Регистрация: 09.11.2009
Сообщений: 5
По умолчанию определения массива как указателя

Собственно вопрос возник в определения массива через указатель.Как избавиться от такой записи в массиве &x[i], и как можно другим способом сделать обращения.
Код:
#define N 10
void main(){
       long int  *x,i;
       long int *s;
       *s=1;
       x=(long int*)realloc(x,i*sizeof(long int));
	clrscr();
		puts("Введите елементы массива:\n");
	for(i=0;i<N;i++){
		scanf("%ld",&x[i]);}
	for(i=0;i<10;i++)
	  if(x[i]>6){
	  *s*=x[i];
	}
		printf("Результат елементов массива: %ld",*s);
    getch();
 }

Последний раз редактировалось jon888; 09.05.2011 в 11:42.
jon888 вне форума Ответить с цитированием
Старый 09.05.2011, 11:57   #2
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию Ответ

Код:
#include <stdlib.h>
#include <stdio.h>


#define N 10

void main(){
	long int  *x = 0x0000, i = 0;
    long int *s = 0x0000;
	//обязательное выделение памяти для указателя
	s = (long int *)malloc(sizeof(long int));
	//теперь можно проинициализировать
    *s=1;
    x=(long int *)realloc(x, i*sizeof(long int) );
	puts("Введите елементы массива:\n");
	for(i=0;i<N;i++)
	{
		//scanf("%ld",&x[i]);
		//имя массива одновременно является указателем на первый элемент,
		//то есть записи x и &x[0] эквивалентны
		//поэтому можно обращаться к адресам через имя массива посредством прибавления
		//смещения относительно начального адреса
		//смещение адреса происходит относительно типа массива
		//так как sizeof(long int)=4, то смещение при i=1 будет равно 4, при i=2 будет равно 8 и так далее
		scanf("%ld",x+i);	
	}
	for(i=0;i<10;i++)
	{
	  if(x[i]-5 > 3)
	  {
		*s *=x[i];
	  }
	}
	printf("Результат элементов массива: %ld",*s);
	//очистка памяти
	free(x);
	free(s);
    getchar();
	return;
 }
capta1n вне форума Ответить с цитированием
Старый 09.05.2011, 13:00   #3
jon888
 
Регистрация: 09.11.2009
Сообщений: 5
По умолчанию

спасибо )))))
jon888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си - Выделение кучи -> инициализация указателя -> запись массива Renat060888 Общие вопросы C/C++ 3 22.11.2010 19:31
Инкремент для указателя массива структур Valter Общие вопросы C/C++ 6 31.05.2010 18:30
Исправьте программу для определения минимального элемента линейного массива Х Figushkin Помощь студентам 1 22.05.2010 09:23
Как изменить последовательность перемещения указателя в форме? msleg Microsoft Office Access 1 14.05.2010 18:10
Как сделать чтоб грузилась 2-ая картинка при наведении указателя? Roof Помощь студентам 5 02.08.2007 12:08