Здавствуйте, уважаемый алл! )
Известно, что локальная переменная разрушается при выходе за пределы видимости
А вот не могу вспомнить, как просиходит со статическими строками
Например:
void foo (char *& ptr1, char *& ptr2)
{
char * p1 = "hallo";
char * p2 = NULL, * p3 = NULL;
{
char * p4 = "hallo2";
p2 = "hallo3";
p3 = p4;
ptr1 = "hallo4";
}
ptr2 = "hallo5";
}
int main()
{
char * ptr1 = NULL, * ptr2 = NULL;
foo (ptr1, ptr2);
return 0;
}
Получается, что все строки, где бы они не присваивались к указателям, все равно валидны при выходе за пределы своей видимости (при выходе из блока, где были созданы)?
Получается так, что выражение
static char * p = "hallo";
char * p2 = p;
эквивалентно
char * p2 = "hallo";
?
Т.е. эти строки действительно статические? Стоит ли на это рассчитывать?
Запамятовал я...