int _tmain(int argc, _TCHAR* argv[])
{
int a = 10; int b = 10;
int i, j, k;
class Dot
{
public:
int type;
int value;
};
Dot mas[10][10];
for(i = 0; i < a; i++ )
for(j = 0; j < b; j++)
{
mas[j].type = i*a + j;
mas[j].value = 200 + i*a + j;
}
for (i = 0; i < a*b; i++)
{
k = *(reinterpret_cast<int*>(mas) + i * sizeof(Dot) /sizeof(int) );
printf(" %d", k );
k = *(reinterpret_cast<int*>(mas) + i * sizeof(Dot) /sizeof(int) + 1 );
printf(" %d", k );
}
return 0;
}
извращения с указателями и массивами :)
for (int i=0;i<a*b;i++)
{
printf(" %d",*((int)mas[0]+i*24));
}
ругаеться(error C2100: illegal indirection) на (int), но без него выдаються какие-то дикие указатели :(
кто знает как можно сделать? вариант mas[f1(i)][f2(i)] - неинтересен
Цитата:
Originally posted by ALLCALL
у меня есть двухмерный массив int mas[a]; я хочу получать элементы этого массива посредством такой штуки:
for (int i=0;i<a*b;i++)
{
printf(" %d",*((int)mas[0]+i*24));
}
ругаеться(error C2100: illegal indirection) на (int), но без него выдаються какие-то дикие указатели :(
кто знает как можно сделать? вариант mas[f1(i)][f2(i)] - неинтересен
у меня есть двухмерный массив int mas[a]; я хочу получать элементы этого массива посредством такой штуки:
for (int i=0;i<a*b;i++)
{
printf(" %d",*((int)mas[0]+i*24));
}
ругаеться(error C2100: illegal indirection) на (int), но без него выдаються какие-то дикие указатели :(
кто знает как можно сделать? вариант mas[f1(i)][f2(i)] - неинтересен
for (int i=0;i<a*b;i++) {
printf(" %d",*(&mas[0][0]+i));
}
printf(" %d",*(mas+i));
}
Цитата:
Originally posted by vitaly2003s
for (int i=0;i<a*b;i++) {
printf(" %d",*(&mas[0][0]+i));
}
for (int i=0;i<a*b;i++) {
printf(" %d",*(&mas[0][0]+i));
}
Работает! :)
только я не понимаю почему i интерпретируется как размер типа int, а не как число 1,2,3,4
Цитата:
Originally posted by Alexandoros
for (int i=0;i<a*b;i++) {
printf(" %d",*(mas+i));
}
for (int i=0;i<a*b;i++) {
printf(" %d",*(mas+i));
}
не работает :(
for (int i=0;i<a*b;i++) {
printf(" %d",printf(" %d", *(reinterpret_cast<int*>(mas) + i) ));
}
Спасибо :)
только у меня еще вопрос появился
как получить доступ к элементу структуры, если эти жлементы находяться в таком-же массиве?
struct dot
{
int type;
int value;
};
dot mas[a];
если использовать *(&(mas[0][0])+i),например
выдаеться только один элемент, а другой нет :(
Мне кажется, что вопрос имеет следующий смысл: "Как не использовать ООП, при использовании ООП".
Ответ: либо не использовать ООП, либо научится использовать ООП.
Могу порекомендовать лишь касательно второй части ответа.
Узнай, что такое итератор и научись его применять.
Это совсем несложно, но очень удобно.
Цитата:
Originally posted by Green
Хм...
Мне кажется, что вопрос имеет следующий смысл: "Как не использовать ООП, при использовании ООП".
Ответ: либо не использовать ООП, либо научится использовать ООП.
Могу порекомендовать лишь касательно второй части ответа.
Узнай, что такое итератор и научись его применять.
Это совсем несложно, но очень удобно.
Хм...
Мне кажется, что вопрос имеет следующий смысл: "Как не использовать ООП, при использовании ООП".
Ответ: либо не использовать ООП, либо научится использовать ООП.
Могу порекомендовать лишь касательно второй части ответа.
Узнай, что такое итератор и научись его применять.
Это совсем несложно, но очень удобно.
Поддерживаю :). Сча они начнут доказывать что чистый C быстрее ;).