Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 2
Регистрация: 05.05.2014
Сообщений: 31
1

Как правильно объявлять указатель на массив указателей?

05.05.2014, 08:21. Показов 915. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
 
int main(){
    int a, b;
    int *a1, *b1;
    a=1; b=7;
    a1=&a;
    b1=&b;
    int **mas=(int**)malloc(sizeof(int*));
    mas[0]=a1;
    printf("%d\n", *mas[0]);
    mas[150]=b1;
    printf("%d\n", *mas[150]);
    free(mas);
    getch();
}
Почему 14 строка выполняется?
Память же должна выделяется всего под один элемент массива, разве нет?

И вообще:
1. Как правильно объявлять указатель на массив указателей?
2. Как выделять для него память под один элемент?
3. Как функцией realloc увеличивать его размер на один элемент?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2014, 08:21
Ответы с готовыми решениями:

Как объявлять указатель на массив указателей?
Народ, поясните как объявлять указатель на массив указателей и как отправлять его как параметр в...

Как функция возвращает указатель на структуру в массив указателей
Друзья, следующий вопрос, у меня есть функция, которая: создает указатель на структуру-&gt; выделяет...

Как обойтись без указателей и указателей на указатель?
Ибо не совсем выходит понять,что на что тут указывает #include &quot;stdafx.h&quot; #include &lt;iostream&gt;...

Как правильно заполнить массив из указателей типа void*
Насколько я понимаю, его можно заполнить, только присваивая адреса элементам Как это реализовать,...

6
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
05.05.2014, 09:38 2
Цитата Сообщение от bla_bla Посмотреть сообщение
Почему 14 строка выполняется?
Потому что в Си это формально разрешено, т.к. проверка выхода за границы массива не производится.

Цитата Сообщение от bla_bla Посмотреть сообщение
Память же должна выделяется всего под один элемент массива, разве нет?
Да.

Цитата Сообщение от bla_bla Посмотреть сообщение
1. Как правильно объявлять указатель на массив указателей?
Например так:
C
1
2
3
4
5
6
7
int **array;
array = malloc(n * sizeof(int*)); // n — количество элементов
if (array == NULL) { // память не выделилась
    fprintf(stderr, "can't allocate enough memory\n");
    return 1;
}
// память выделилась, продолжаем работу
Цитата Сообщение от bla_bla Посмотреть сообщение
2. Как выделять для него память под один элемент?
Также как и под несколько.

Цитата Сообщение от bla_bla Посмотреть сообщение
3. Как функцией realloc увеличивать его размер на один элемент?
Так как описано в документации, например.
2
1 / 1 / 2
Регистрация: 05.05.2014
Сообщений: 31
05.05.2014, 11:06  [ТС] 3
Сколько памяти занимает указатель??
Зависит ли это значение от типа указателя?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
05.05.2014, 11:30 4
Цитата Сообщение от bla_bla Посмотреть сообщение
Сколько памяти занимает указатель??
- это скорее зависит от ОС (32 или 64 бита)
1
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
05.05.2014, 11:41 5
Цитата Сообщение от bla_bla Посмотреть сообщение
Сколько памяти занимает указатель??
Если указатель на int, то sizeof(int*).
0
1 / 1 / 2
Регистрация: 05.05.2014
Сообщений: 31
06.05.2014, 09:07  [ТС] 6
можно ли как то узнать текущий размер массива с помощью функции sizeof ?
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
06.05.2014, 09:26 7
Цитата Сообщение от bla_bla Посмотреть сообщение
можно ли как то узнать текущий размер массива с помощью функции sizeof ?
В общем случае — нет.
1
06.05.2014, 09:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2014, 09:26
Помогаю со студенческими работами здесь

Как правильно задавать массив указателей и его удалять?
Т.е., например создаю указатель: TPoint *p_Point=NULL; а если массив? TPoint *p_MassPoint; //=?;...

Указатель на массив указателей
Доброго времени суток. Имеется класс Kino, содержащий в себе некоторые поля данных и методы к ним....

Массив указателей на указатель
Помогите, пожалуйста. У нас есть объявление int **m6; Нужно представить и нарисовать, как данный...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru