16.06.2010, 13:20
Quote:
Originally Posted by доки, доки и еще раз доки....
The sizeof operator returns the size of a variable in “elements”. For a
simple (non-compound) variable, the result of sizeof is always 1, because an element is a cell for a simple variable. An array with one dimension holds a number of cells and the sizeof operator returns that number. The snippet below would therefore print “5” at the display, because the array “msg” holds four characters (each in one cell) plus a zero-terminator: Listing: sizeof operator pawn Code:
of elements in each dimension. For the last (minor) dimension, an element will again be a cell, but for the major dimension(s), an element is a sub-array. In the following code snippet, observe that the syntax sizeof matrix refers to the major dimension of the two-dimensional array and the syntax sizeof matrix[] refers to the minor dimension of the array. The values that this snippet prints are 3 and 2 (for the major and minor dimensions respectively): Listing: sizeof operator and multidimensional arrays pawn Code:
convenient when used as a default value for function arguments. |
Quote:
Originally Posted by оттуда же
results in the size in “elements” of the specified variable. For
simple variables and for arrays with a single dimension, an element is a cell. For multi-dimensional arrays, the result is the number of array elements in that dimension —append [] to the array name to indicate a lower/more minor dimension. If the size of a variable is unknown, the result is zero. When used in a default value for a function argument, the expression is evaluation at the point of the function call, instead of in the function definition. |
2) Если допустим массив передан функции в качестве параметра, то его размер НЕ может быть вычислен (т.к. функции передается всего лишь его адрес) (как в примере с OnPlayerText выше), стало быть его надо указывать явно (например, передавать в качестве дополнительного параметра).
3) Когда sizeof выступает в качестве дефолтного значения одного из аргументов функции (при этом будучи примененным к другому ее аргументу), его значения вычисляетя непосредственно при самом вызове функции (если оно может быть вычислено, см. пункт 2).