Страница 1 из 3
Язык программирования C
Добавлено: 03 апр 2009, 16:55
YURI
Здравствуйте.
У меня имеется небольшой вопрос.
Есть матрица (m на n). Как нужно использовать #define, чтобы в теле программы можно было обращаться к элементам матрицы в формате a(i,j) ?
Язык программирования C
Добавлено: 03 апр 2009, 17:34
da67
#define a(i,j) a[i][j]
Так не работает?
Язык программирования C
Добавлено: 03 апр 2009, 17:46
delphiec
Непонятно для чего это нужно.
B программе массив[i][j] i и j заменяются на число.
Ho не видно практического смысла в этом.
Язык программирования C
Добавлено: 03 апр 2009, 17:49
A.I.
#define же используется для объявления констант. Сомневаюсь что получится изменить стандартное обращение к массиву. Синтаксис языка всё-таки
delphiec, это ты объявил константами i,j. Насколько я понял, это не то
Язык программирования C
Добавлено: 03 апр 2009, 17:56
qwertylol
YURI писал(а):Source of the post Здравствуйте.
У меня имеется небольшой вопрос.
Есть матрица (m на n). Как нужно использовать #define, чтобы в теле программы можно было обращаться к элементам матрицы в формате a(i,j) ?
Нельзя так сделать.
Мне интересно, как тогда компилятор будет массивы от функций отличать .
Язык программирования C
Добавлено: 03 апр 2009, 18:04
YURI
delphiec писал(а):Source of the post Непонятно для чего это нужно.
B программе массив[i][j] i и j заменяются на число.
Ho не видно практического смысла в этом.
Это не то.
#define a(i,j) a[i][j]
Так не работает?
Нет, ведь матрица задана в одномерном массиве.
#define же используется для объявления констант. Сомневаюсь что получится изменить стандартное обращение к массиву. Синтаксис языка всё-таки
delphiec, это ты объявил константами i,j. Насколько я понял, это не то
Да не то.
Я думал можно вот так,
#define a(i,j) a(i*n+j)
но не работает.
qwertylol писал(а):Source of the post YURI писал(а):Source of the post Здравствуйте.
У меня имеется небольшой вопрос.
Есть матрица (m на n). Как нужно использовать #define, чтобы в теле программы можно было обращаться к элементам матрицы в формате a(i,j) ?
Нельзя так сделать.
Мне интересно, как тогда компилятор будет массивы от функций отличать .
Знаю точно, что можно.
Язык программирования C
Добавлено: 03 апр 2009, 18:08
qwertylol
Язык программирования C
Добавлено: 03 апр 2009, 18:28
delphiec
Сори, не понял сразу вопроса.
Думается лучше сделать функцию и не использовать define
Язык программирования C
Добавлено: 03 апр 2009, 18:37
da67
Компилятор получает текст уже после раскрытия всех макросов.
YURI писал(а):Source of the post #define a(i,j) a[i][j]
Так не работает?
Нет, ведь матрица задана в одномерном массиве.
B исходном задании такого условия не было Это точно так? Как описан массив?
Я думал можно вот так,
#define a(i,j) a(i*n+j)
но не работает.
У второго a скобки должны быть квадратными.
Как всё же описан массив? Это важно.
Язык программирования C
Добавлено: 03 апр 2009, 18:59
qwertylol
A кто же тогда макросы раскрывает? Как раз компилятор получает исходный код и превращает его в бинарный.
Компилятор не сможет понять
это обращение к массиву или к функции. Именно поэтому нельзя называть функцию и переменную одним именем.