2013-09-01 2 views
0

в библиотеке math3d, автор использовал эту следующую строку, которая меня смутила. Мне было интересно, может ли кто-нибудь объяснить использование.использование typedef в библиотеке math3d

typedef float M3DVector2f[2]; 

Как массив может быть синонимом одного поплавка?

+0

Это массив из 2-х поплавков. В названии также есть ключ (2f). –

+0

Это все хорошо. Но это действительно первый раз в C++, я столкнулся с чем-то таким странным образом. Не было бы более логичным представлять его как 'typedef float [2] M3DVector2f?' –

+1

@nerorevenge Would вы объявляете такой массив, как 'float [2] x;'? Очевидно, что это незаконно, поэтому оно также было бы незаконным для typedef. По сути, это та же самая причина, по которой вы пишете [1], а не [1] a. – john

ответ

3

M3DVector2f является псевдонимом для float массив из 2 элементов.

Это позволяет избежать избытка машинописи и давая смысл имя

Таким образом, вы можете просто сказать,

M3DVector2f point1, point2;

вместо float point1[2], point2[2];

или

M3DVector2f point3 ={2.3f,-2.1f};

вместо float point3[2] ={2.3f,-2.1f};

+0

haha ​​больше никаких изменений не требуется, я получил от этого geist.I думал, что это один из тех странных трюков типа c, где можно было уйти от странного синтаксиса или странного синтаксиса, чтобы отпугнуть noobs как moi. –

+0

Просто будьте осторожны с использованием этого типа в параметре функции. Если 'M3DVector2f' был' struct', вы могли бы передавать копии; поскольку это псевдоним типа массива, вы всегда будете получать указатель на исходные данные. – DanielKO

Смежные вопросы