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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2017, 11:23   #1
mak83
Новичок
Джуниор
 
Регистрация: 28.05.2017
Сообщений: 1
По умолчанию Указатель на массив указателей на языке СИ [Нужна помощь]

Всем здравствуйте.
Я тут впервые. и если подобная тебя была то не пинайте а подскажите

Вообщем дали мне задачу... в которой один из пунктов написано:

Есть массив из 10 элементов типа int.
1) Нужно огласить указатель на массив указателей и выделить под него память с аналогичным количеством ячеек
2) Заполнить массив указателей адресами элементов массива.

Люди добрые помогите мне. поясните вкратце как это сделать (понимаю что лекцию тут никто не собирается устраивать :-)) )

Начал писать так:

#include <stdio.h>
#define N 10

int main()
{
int i=0;
int arr[N]={5, 1, 9, 8, 6, 7, 2, 4, 5, 3};
int *p1 = arr[0];
int *p2 = arr[1];
int *p3 = arr[2];
int *p4 = arr[3];
int *p5 = arr[4];
int *p6 = arr[5];
int *p7 = arr[6];
int *p8 = arr[7];
int *p9 = arr[8];
int *p10 = arr[9];
int *point[N] = {*p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9, *p10};

Неужели нельзя сократить как то код? Или я правильно написал?

Последний раз редактировалось mak83; 27.06.2017 в 11:51. Причина: добавил код
mak83 вне форума Ответить с цитированием
Старый 27.06.2017, 12:05   #2
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от mak83 Посмотреть сообщение
Всем здравствуйте.
Я тут впервые. и если подобная тебя была то не пинайте а подскажите

Вообщем дали мне задачу... в которой один из пунктов написано:

Есть массив из 10 элементов типа int.
1) Нужно огласить указатель на массив указателей и выделить под него память с аналогичным количеством ячеек
2) Заполнить массив указателей адресами элементов массива.

Люди добрые помогите мне. поясните вкратце как это сделать (понимаю что лекцию тут никто не собирается устраивать :-)) )

Начал писать так:

#include <stdio.h>
#define N 10

int main()
{
int i=0;
int arr[N]={5, 1, 9, 8, 6, 7, 2, 4, 5, 3};
int *p1 = arr[0];
int *p2 = arr[1];
int *p3 = arr[2];
int *p4 = arr[3];
int *p5 = arr[4];
int *p6 = arr[5];
int *p7 = arr[6];
int *p8 = arr[7];
int *p9 = arr[8];
int *p10 = arr[9];
int *point[N] = {*p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9, *p10};
}
Неужели нельзя сократить как то код? Или я правильно написал?
Ващето идея верная по сути (если не считать синтаксические ошибки), только подумайте, что будет при 300 элементах?)
Для работы с массивами есть циклы, они буквально созданы друг для друга и идут рука об руку


Код:
int main()
{	
	int arr[]={5, 1, 9, 8, 6, 7, 2, 4, 5, 3}; //такое описание, без указания N не будет работать в старых стандартах
	const int N = sizeof(arr)/sizeof(arr[0]); //фактическое число элементов в arr по результату компиляции
        int *point[N];
        for (int i =0; i < N ; ++i)
          point[N] = arr + i; //имя массива есть указатель на 0й элемент - зубрим как мантру
}

Последний раз редактировалось alexzk; 27.06.2017 в 12:11.
alexzk вне форума Ответить с цитированием
Старый 27.06.2017, 12:10   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Можно. Неправильно.
1. Где у вас выделение памяти?
2. Почему вы заполняете значениеями, а не как по условию адресами?
3. Почему вы игнорируете циклы? А если N = 100?

alexzk
Код:
const static int N = sizeof(arr)/sizeof(arr[0]); //скок на самом деле элементов в arr
Не надо так... std::extent или std::size (если компилятор посвежее)

Цитата:
имя массива есть указатель на 0й элемент - зубрим как мантру
приводится к, разница кажется не большой...

Код:
point[N] = arr + i;
Зачем арфметику указателей пихать? Можно ж просто адреса у элементов брать.

Последний раз редактировалось p51x; 27.06.2017 в 12:14.
p51x вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатель на массив указателей (ExtractKey и EnCryptFileEx) sav.a Общие вопросы Delphi 6 27.12.2016 06:01
Я правильно понимаю, что это указатель на массив указателей на структуры? Кащей Общие вопросы C/C++ 3 14.08.2013 22:32
Указатель на массив указателей Pein95 Общие вопросы C/C++ 12 26.01.2013 17:59
Указатель на массив указателей на массив char'ов... SrgGld Общие вопросы C/C++ 0 19.11.2010 23:35
Указатель на массив указателей, и т.д. Bernarditto Общие вопросы C/C++ 1 09.07.2010 12:26