Здравствуйте, Аноним, Вы писали:
А>почему c int так проходит, а с void, нет? А>например... А>void **box; А>int i,d; А>for(i=0,i<60;i++){ А>d=rand(); А>// 1 А>box[i]=calloc(1,1024); А>box[i][d]=foo(another_buffer); // invalid use of void expression
А>/* 2 А>box=calloc(1,1024); А>box[d]=foo(another_buffer); // нормально, еслби не меняется больше 1 раза, но мне нужен еще один индекс... А>*/ А>} А>foo возвращает указатель на char
Потому что box — указатель на указатель, следовательно box[d] эквивалентный *(box+d) это просто указатель. Поэтому все правильно. Функция возвращает указатель, и он присваивается *(box+d)