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

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

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

static const - C++

21.06.2012, 11:07. Просмотров 4709. Ответов 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;
           }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2012, 11:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос static const (C++):

static const? - C++
если мне нужна константа в классе, как ее лучше объявить со static или без? разница будет только в том, что со статиком мне можно будет...

static и const - C++
static void A(); Что дает этот статик? Что он вообще дает? int A() const; Что дает конст в данном случае? static int...

const static vector<type> - C++
Мне нужно создать внутри класса вектор цветов предлагаемых в конструкторе как дефолтные... лучше static, лучше const... главное - чтобы...

#define PI or static const float PI - C++
Что лучьше обьясните? #define PI 3,14159265 или static const float PI=3,14159265;

Что такое static const и для чего он нужен? - C++
Что такое static const ? И для чего он нужен ?

Инициализация в объявлении константных статических (const static) членов-данных класса. - C++
Привет. Подскажите пожалуйста почему нельзя создавать в классе const static float, а const static int можно? class A{ const...

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

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

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

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

3) Когда присваивается NULL это значение является признаком того, что указатель указывает на адрес, которой точно не может содержать полезной информации.
Обычно применяется в списках, то есть указывает на начало списка.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2012, 13:25
Привет! Вот еще темы с ответами:

int const * const foo(const int* param) const - разъясните значение квалификаторов - C++
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ? 2: делает содержимое массива или...

Ошибка компиляции "forbids in-class initialization of non-const static member" - C++
Доброго времени суток! Прошу помощи, так как сам понять в чем проблема не могу. Имею вот такой код: #include &quot;iostream&quot; ...

char operator[](unsigned short offset) const; // что означает const? - C++
Собстенно вопрос уже озвучен :).

Что это bool operator== (const CLASS&) const; - C++
Что это? class CLASS { public: bool operator== (const CLASS&amp;) const; ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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