Автор | С++ (вопросик) |
void func(void)
{
int i;
printf("Print: ");
for( ; i > 0 ; i-- ) printf("%d ", i);
printf("Done\n");
}
int main(int argc,char* argv)
{
int *a;
a = (int*)((((int)(&argc) - 8) & (-0x10)) - 0x24);
*a=10; func();
*a=20; func();
return 0;
}
Покажи мне тут, где передается значение переменной i
чтоб цикл
for( ; i > 0 ; i-- ) printf("%d ", i);
Отработал и вывел числа. |
для MrSlayer:
Встроенный в линукс gcc не выдает ошибок. Варнинги тоже. |
Хм... а почему тишина? |
ну, во-первых, я не пойму что это за строчка
a = (int*)((((int)(&argc) - 8) & (-0x10)) - 0x24);
а, во-вторых, я не понимаю, что ты хочешь сделать |
угораем над нубом |
для sanek_92:
Жаль что не понимаешь...
Тебе всю суть проекта рассказать?))
Если в контектсте этой программы, то я не хочу писать в какую конкретно ячейку клалось значение, мне нужна идея, чтоб это делалось как то попроще. |
для Вех:
я могу рассматривать это как оскорбление? |
Тебе всю суть проекта рассказать?))
расскажи че делает эта строчка)
Если в контектсте этой программы, то я не хочу писать в какую конкретно ячейку клалось значение, мне нужна идея, чтоб это делалось как то попроще.
я ваще ниче не понял) |
весь код в 1м посте- ересь...начни по-другому, посан... |
для Вех:
обоснуй. Код работает. Выводит что его просят. Что не так? |
для Вех:
я могу рассматривать это как оскорбление? нет, программера так не оскорбить |
Что не так?
плохо лазить в память.
хочешь так делать пиши на асемблере |
Ради интереса запустил и увидел, что ничего не работает. Как предполагалось, что будет писать использование неинициализированной переменной, так и работает. А чего ты ждал то? |
А чего ты ждал то? у него же чистый жцц стоит)) |
для MrSlayer:
на gcc все ок:) |
для MrSlayer:
Я ждал совета, как это упрастить. |
Я ждал совета, как это упрастить.
void func(int i)
{
printf("Print: ");
for( ; i > 0 ; i-- ) printf("%d ", i);
printf("Done\n");
}
int main(int argc,char* argv)
{
func(10);
func(20);
return 0;
} |
int main(int argc,char* argv)
еще
int main(void)
аргументы командной строки тут не нужны) |
для sanek_92:
void func(int i)
{
printf("Print: ");
for( ; i > 0 ; i-- ) printf("%d ", i);
printf("Done\n");
}
int main(int argc,char* argv)
{
func(10);
func(20);
return 0;
}
Это конечно гениально... но я хотел немного другую идею :) |
Я так понимаю, ты просто подобрал ячейку памяти, где потом выделяется локальная переменная и пишешь напрямую в память числа. Только вот запусти программу, например, с параметрами командной строки :) А еще лучше, пересобери проект под другую архитектуру или под другую ОС. |