среда, 22 февраля 2012 г.

Эллипсис в C/C++

Эллипсис (многоточие в описании функции, там где аргументы) может приводить к ошибкам сегментации памяти. Если, например,


//Функция, просто выводит один аргумент за другим
void f(char *s1, ...)
{
char **cp = &s1; //--адрес первого указателя
while (*cp)
{ std::cout << (*cp) << std::endl;
cp++; //-- перемещаемся на следующий аргумент
}
}

// ...
f("First ","Two ","Three ", 0); // - это правильный вызов, 0 - признак конца списка аргументов
// ...
f("First ","Two ","Three "); // - это ошибочный вызов, дающий ошибку сегментации
// ...


Вот значит, что VB с людьми делает - появляются вредные привычки в программировании.

Комментариев нет:

Отправить комментарий