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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2016, 14:44   #1
Романннн
Пользователь
 
Регистрация: 28.02.2016
Сообщений: 37
По умолчанию как инициализировать все элементы матрицы через указатель?на си

и что такое массив указателей,как он выделяется в памяти?

и почему двумерный массив не равномерно распределяется в памяти?

Последний раз редактировалось BDA; 28.02.2016 в 16:08.
Романннн вне форума Ответить с цитированием
Старый 28.02.2016, 15:02   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Зачем тебе это знать? Ну, если хочется выделить сегмент, то:
static double XX[...];
Только вот для чего?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.02.2016, 15:07   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
как инициализировать все элементы матрицы через указатель?
memset, например

Цитата:
и что такое массив указателей,как он выделяется в памяти?
Массив указателей - это, внезапно, массив указателей... У вас же невызывает вопросов массив интов, чем указатели так не угодили как типы? Выделяется также как и другой (естественно, надо не забыть для каждого память выделить если надо)

Цитата:
и почему двумерный массив не равномерно распределяется в памяти?
Что значит не равномерно? Равномерно. Или вы про массив указателей с выделением памяти? Ну так тут же очевидно: выделение памяти отдельная операция и где ее выделить это задача менеджера памяти.
p51x вне форума Ответить с цитированием
Старый 28.02.2016, 16:20   #4
Романннн
Пользователь
 
Регистрация: 28.02.2016
Сообщений: 37
По умолчанию

#include <stdio.h>
int main(void)
{
int *p,x[1][1];
p=&x[0][0];
scanf("%d",p);
printf("%d\t%p\t%d\n",p,p,*p);
printf("%d\t%p\t%d",&x[0][0],&x[0][0],x[0][0]);
return 0;
}
что здесь происходит?

я имею ввиду что в одномерном массиве следующий элемент стоит за предыдущим а в двумерном это ведь не так?

для себя)))

Последний раз редактировалось BDA; 28.02.2016 в 20:02.
Романннн вне форума Ответить с цитированием
Старый 28.02.2016, 16:31   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
я имею ввиду что в одномерном массиве следующий элемент стоит за предыдущим а в двумерном это ведь не так?
Обычно так, если это не иметация через массив указателей.
p51x вне форума Ответить с цитированием
Старый 28.02.2016, 16:35   #6
Романннн
Пользователь
 
Регистрация: 28.02.2016
Сообщений: 37
По умолчанию

меня больше всего интересует в этой программе:что выводит первый аргумент в первом printf.И еще (пусть вводим 3)scanf("%d",p); и *p=3 тоже самое в результате?
Романннн вне форума Ответить с цитированием
Старый 28.02.2016, 16:38   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Романннн Посмотреть сообщение
я имею ввиду что в одномерном массиве следующий элемент стоит за предыдущим а в двумерном это ведь не так?
С чего это? Всё как обычно. И для N-мерного. Нужно просто усвоить, что массивы и указатели неразрывно связаны.
Вот и на кой мне нужно знать, где там прога хранит массив? Может для Асмиков, это и имеет какое-то значение, то для Прикладников, вообще без разницы.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.02.2016, 17:36   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
что выводит первый аргумент в первом printf
Ничего. Читайте доку - первый аргумент это строка-формат. А вообще все спецификаторы описаны http://en.cppreference.com/w/cpp/io/c/fprintf

Цитата:
И еще (пусть вводим 3)scanf("%d",p); и *p=3 тоже самое в результате?
Открываем доку (да когда ж новички начнуть хоть что-то читать) http://en.cppreference.com/w/cpp/io/c/fscanf и узнаем, что дальше передается адрес куда будет записано и, соответственно, ...
p51x вне форума Ответить с цитированием
Старый 28.02.2016, 18:39   #9
Романннн
Пользователь
 
Регистрация: 28.02.2016
Сообщений: 37
По умолчанию

#include<stdio.h>
#include<conio.h>
int main(void)
{
const int a=7,b=8;
int m,n,c,i=0,j=0,*p,A[a][b];
do
{printf("vvedite m and n\n");scanf("%d %d",&m,&n);}
while(m<=0||m>a||n<=0||n>b);
p=&A[i][0];
while(c<56)
{
if(i==j)*p=0;
if(i<j)*p=1;
else *p=-1;
p++;c++;i++;j++;
}
p-=c;
while(c<56)
{printf("\t%d",*p);p++;}
printf("\n");
getch();return 0;
}
помогите:Заполнить матрицу А (7 на 8) на главной диагонали "0",над диагональю "1",под "-1"(через указатели) на си
Романннн вне форума Ответить с цитированием
Старый 12.04.2016, 21:54   #10
Романннн
Пользователь
 
Регистрация: 28.02.2016
Сообщений: 37
По умолчанию

помогите переделать под динамический массив http://ideone.com/ozDs9b
Романннн вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан указатель P1 на первый элемент непустого двусвязного списка Продублировать в списке все элементы с нечетными значениями S.I.D. Паскаль, Turbo Pascal, PascalABC.NET 0 23.01.2013 19:08
Процедуры - вычислить количество элементов матрицы,кратных 5 и заменить на 0 все четные элементы матрицы Ksenichka Помощь студентам 1 19.05.2011 14:38
Элементы матрицы. Все ненулевые элементы массива D(k) расположить в начале массива E(k) и подсчитать их к Вася Маклауд Помощь студентам 0 03.04.2011 17:21
Как правильно инициализировать через функцию массив? Catharsis Общие вопросы C/C++ 3 14.05.2010 16:34
Как записать все элементы матрицы в порядке неубывания? May_Be Помощь студентам 10 26.12.2009 01:50