Еще один рифф на ответ Velcrow, но использует одну промежуточную таблицу и использует переменную, используемую для нумерации строк, чтобы получить счет, а не выполнять дополнительный запрос для ее вычисления. Также начинается отсчет, так что первая строка - строка 0, чтобы просто использовать Floor и Ceil для выбора медианных строк.
SELECT Avg(tmp.val) as median_val
FROM (SELECT inTab.val, @rows := @rows + 1 as rowNum
FROM data as inTab, (SELECT @rows := -1) as init
-- Replace with better where clause or delete
WHERE 2 > 1
ORDER BY inTab.val) as tmp
WHERE tmp.rowNum in (Floor(@rows / 2), Ceil(@rows / 2));
Вам необходимо привести адрес к указателю на объект struct block
. Также вам необходим экземпляр объекта struct block
для назначения приведенного указателя.
См. Этот пример:
struct block * volatile block_pointer = (struct block*)START_ADDR;