Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.83
SAMatyunin
3 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 16
#1

static const - C++

21.06.2012, 11:07. Просмотров 4231. Ответов 2
Метки нет (Все метки)

объясните, пожалуйста, вот такую странную конструкцию (накопал в старой проге):

после #include идет следующее:

C++
1
static const char *user = NULL;
1. для чего вообще static const?
2. почему константа *user - сделана указателем?
3. почему присваивается NULL

сама константа смотрю используется здесь:

C++
1
2
3
4
5
6
7
8
static void no_auth_data_fn(const char * pServer, const char * pShare, char * pWorkgroup,
    int maxLenWorkgroup, char * pUsername, int maxLenUsername, char * pPassword,
    int maxLenPassword)
           {
    if(user && user[0] != 0) strncpy(pUsername, user, maxLenUsername - 1);
    if(pass && pass[0] != 0) strncpy(pPassword, pass, maxLenPassword - 1);
        return;
           }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2012, 11:07     static const
Посмотрите здесь:

C++ const static vector<type>
C++ static и const
char operator[](unsigned short offset) const; // что означает const? C++
C++ Что это bool operator== (const CLASS&) const;
C++ static const?
C++ int const * const foo(const int* param) const - разъясните значение квалификаторов
C++ Const в параметрах. Перед чем нужно употребить const дабы обезопасить данные от изменения
C++ Ошибка компиляции "forbids in-class initialization of non-const static member"
#define PI or static const float PI C++
Ошибка: Cannot convert 'char const[18]' to 'const wchar_t *' C++
Инициализация в объявлении константных статических (const static) членов-данных класса. C++
C++ Модификатор const для параметра функции не const?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soft.creator
103 / 103 / 4
Регистрация: 17.10.2010
Сообщений: 283
21.06.2012, 13:08     static const #2
static - видна только в этом c/cpp-файле
const char* - указатель на неизменяемую строку
NULL - изначально никуда не указывает

По всей видимости, где-то в другом месте программы делается так:
C++
1
user = "username";
и потом уже вызывается no_auth_data_fn
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
21.06.2012, 13:25     static const #3
1) static - это спецификатор класса памяти, который определяет как должна храниться переменная.
Переменные типа static - это переменные так называемого долговременного хранения, то есть они хранят свои значения в пределах своей функции или файла.

const - ключевое слово делает переменную константой.

2) из представленного кода не до конца понятно.

3) Когда присваивается NULL это значение является признаком того, что указатель указывает на адрес, которой точно не может содержать полезной информации.
Обычно применяется в списках, то есть указывает на начало списка.
Yandex
Объявления
21.06.2012, 13:25     static const
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru