Локальные переменные, статические строки
От: Аноним  
Дата: 11.09.08 21:13
Оценка:
Здавствуйте, уважаемый алл! )
Известно, что локальная переменная разрушается при выходе за пределы видимости
А вот не могу вспомнить, как просиходит со статическими строками
Например:

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";
?
Т.е. эти строки действительно статические? Стоит ли на это рассчитывать?
Запамятовал я...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.