среда, 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 с людьми делает - появляются вредные привычки в программировании.

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

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