Форум программистов, компьютерный форум CyberForum.ru

Определение типа через typedef - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.90
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.08.2010, 05:25     Определение типа через typedef #1
То-ли я пересидел, то-ли я просто этого не знаю, но все же.
Через typedef определить
1) массив из 7 указателей на целые числа. Как не через тайпдеф знаю - int*arr[7]; А вот как через него - хз...
2) указатель на массив из 7 указателей на целые числа. Полагаю что не через тайпдеф это будет как-то так: int**arr[7];
3) массив из 8 массивов по 7 указателей на целые. Ступор. На ум приходит только int*arr[?][8][7] но что-то мне это крайне сомнительно.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.08.2010, 06:45     Определение типа через typedef #2
Цитата Сообщение от Lavroff Посмотреть сообщение
То-ли я пересидел, то-ли я просто этого не знаю, но все же.
Через typedef определить
1) массив из 7 указателей на целые числа. Как не через тайпдеф знаю - int*arr[7]; А вот как через него - хз...
2) указатель на массив из 7 указателей на целые числа. Полагаю что не через тайпдеф это будет как-то так: int**arr[7];
3) массив из 8 массивов по 7 указателей на целые. Ступор. На ум приходит только int*arr[?][8][7] но что-то мне это крайне сомнительно.
Вот определения с примерами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <cstdlib>
 
/* Константы использовал для удобства */
const size_t size1 = 7;
const size_t size2 = 8;
 
/* 1 */
typedef int * tArr1[size1];
 
/* 2 */
typedef int * (* tArr2)[size1];
 
/* 3 - Массив из 8 массивов... размер не указан, значит будет просто указателем */
typedef int * (* tArr3)[size2][size1];
 
int main()
{
    /* 1 */
    std::cout << "\t " << 1 << std::endl;
    tArr1 arr1;
    for(size_t i = 0; i < size1; ++i)
    {
        arr1[i] = new int (i);
        std::cout << *arr1[i] << std::endl;
    }
 
    /* 2 */
    std::cout << "\t" << 2 << std::endl;
    tArr2 arr2 = &arr1;
    for(size_t i = 0; i < size1; ++i)
        std::cout << *(*arr2)[i] << std::endl;
 
    /* Третий пример инициализировать как-то лень было ;)
     * думаю, сам принцип понятен
     */
    return EXIT_SUCCESS;
}
Вот эта тема тоже может быть полезна
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.08.2010, 09:12     Определение типа через typedef #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C
1
2
3
4
5
6
7
8
9
typedef int *Base[7];
typedef Base *BasePtr;
typedef Base BaseArr[8];
 
...
 
    Base a;
    BasePtr b;
    BaseArr c;
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.08.2010, 14:07  [ТС]     Определение типа через typedef #4
Nameless One, Спасибо. Так и думал, что каким-то таким макаром. Спасибо
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
29.08.2010, 13:54     Определение типа через typedef #5
Цитата Сообщение от Lavroff Посмотреть сообщение
1) массив из 7 указателей на целые числа. Как не через тайпдеф знаю - int*arr[7]; А вот как через него - хз...
2) указатель на массив из 7 указателей на целые числа. Полагаю что не через тайпдеф это будет как-то так: int**arr[7];
3) массив из 8 массивов по 7 указателей на целые. Ступор. На ум приходит только int*arr[?][8][7] но что-то мне это крайне сомнительно.
Можно из простых состовлять сложные:
1)
C++
1
2
typedef int *pint; // Указатель на целые числа
typedef pint p7int[7];  // Семь указателей на целые числа
Yandex
Объявления
29.08.2010, 13:54     Определение типа через typedef
Ответ Создать тему
Опции темы

Текущее время: 13:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru