int f(int p[][20][30])
{
int i = 1, j = 2, k = 3;
int v = p[i][j][k];
}
...
int p[10][20][30];
f(p);
int f(int *p, int n2, int n3) // p[][n2][n3]
{
int i = 1, j= 2, k = 3;
int v = p[(((i * n2) + j) * n3) + k]; // v = p[i][j][k];
}
...
int p[10][20][30];
f(&p[0][0][0], 20, 30);
int f(int n2, int n3, int p[][n2][n3])
{
int i = 1, j = 2, k = 3;
int v = p[i][j][k];
}
...
int p[10][20][30];
f(20, 30, p);
но при вызове ... я увидел только адреса в памяти на консоли
Как это сделать правильно
char *buf;
size_t buf_sz;
...
BOOL CALLBACK DuffRecording(HRECORD hangle, const void *buffer, DWORD lenght, void *user)
{
buf = realloc(buf, buf_sz + length);
memcpy(buf + buf_sz, buffer, lenght);
buf_sz += length;
return TRUE;
}
// эту функцию нужно вызывать когда есть новые данные,
// например, после каждого вызова DuffRecording
void chunk_handler(void)
{
size_t offset = 0;
while (buf_sz >= offset + CHUNK_SIZE) {
do_something_with_data(buf + offset);
offset += CHUNK_SIZE;
}
if (offset) {
memmove(buf, buf + offset, buf_sz - offset);
buf_sz -= offset;
}
}
// эта функция будет вызвана с p указывающим на буфер длиной CHUNK_SIZE
void do_something_with_data(void *p)
{
...
}
void SomeClass::someFunc(SYSTEMTIME * _minDate, SYSTEMTIME * _maxDate){
SYSTEMTIME minDate, maxDate;
std::vector<SYSTEMTIME> dates;
...
minDate = dates[0]; // тут все хорошо. Новые значения присвоены
maxDate = dates[1];
...
*_minDate = minDate;
*_maxDate = maxDate;
}
void SomeClass::someFunc(SYSTEMTIME * & _minDate, SYSTEMTIME * & _maxDate){
SYSTEMTIME minDate, maxDate;
std::vector<SYSTEMTIME> dates;
...
minDate = dates[0]; // тут все хорошо. Новые значения присвоены
maxDate = dates[1];
...
// что-то сделать с объектами, на которые указывают _minDate и _maxDate, например освободить
_minDate = new SYSTEMTIME(minDate); // _minDate присвоен указатель на новый объект.
_maxDate = new SYSTEMTIME(maxDate); // проветил, _minDate и _maxDate дейсвтиетльно какие нужно.
}
как посмотреть на внутренности ОС, посмотреть как это работает?