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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
#1

Когда переменная будет const? - C++

04.02.2011, 22:01. Просмотров 1138. Ответов 21
Метки нет (Все метки)

Всем привет, вот меня заинтересовал вопрос, я объявил char test = "t";
и компилятор говорит, что это const, когда переменная при таком объявлении будет являться не char test, а const char test? Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2011, 22:01     Когда переменная будет const?
Посмотрите здесь:

const переменная - C++
Вопрос по коду ниже. Насколько я знаю const переменная, это переменная по имени которой нельзя перезаписывать область памяти. Я завёл...

Переменная double отображается неправильно когда ее значение = 0 - C++
Написал код, все работает, но при определенных условиях переменная double со значением 0 отображается как какое то число с экспонентой,...

Когда приравниваю переменную к функции, переменная становится равна нулю - C++
Есть функция, которая считает выражение и возвращает результат. И есть переменная, которая к этой функции приравнивается. По отдельности...

Когда будет верно условие? - C++
маненький вопрос, при каких начениях будет верно условие ((ac^bc)&~(ac|cc))!=0 не могу никак разобраться с этими поразрядными...

Не могу найти ошибку в коде, когда ввожу то переменная принимаєт только 1 символ. ето програма телефонная книг - C++
#include <iostream> #include <cstdlib> #include <string.h> #include <stdio.h> #include <fstream> using namespace...

Чему будет равна переменная после выполнения следующего фрагмента программы? - C++
Пожалуйста, очень прошу помогите с тестами(( 2)Чему равна переменная m при p = 32 и p1 = 9 после выполнения следующего фрагмента...

После выполнения (завершения) функции test переменная умрет, а что будет с переменной в Result? - C++
class abc { public: int argc; char **argv; char **azColName; }; std::list<abc> Result;

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:05     Когда переменная будет const? #2
Цитата Сообщение от BTR Посмотреть сообщение
я объявил char test = "t";
так нельзя, можно
так
C++
1
char *test = "t";
или
так
C++
1
char test = 't';

и компилятор говорит, что это const
правильно говорит
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
04.02.2011, 22:05     Когда переменная будет const? #3
потому что ты объявил строку, а не символ. Либо объяви указатель
asics
Freelance
Эксперт C++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
04.02.2011, 22:05     Когда переменная будет const? #4
BTR, Перемнную типа char записывают в одинарные кавычки, а вот строковый литерал - в двойные, то есть так:
C
1
char *test = "t";
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:05  [ТС]     Когда переменная будет const? #5
если я непонятно изложил вопрос, то скажите... (если что извиняюсь)
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:06     Когда переменная будет const? #6
Цитата Сообщение от BTR Посмотреть сообщение
если я непонятно изложил вопрос, то скажите... (если что извиняюсь)
да, а в чём, собственно, вопрос?
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:10  [ТС]     Когда переменная будет const? #7
вот теперь понял, благо от РНР опыт есть, всем большое спасибо

Добавлено через 1 минуту
в подождите, еще сейчас вопрос задам

Добавлено через 2 минуты
вот я передаю по ссылке объект что бы не вызвать копию объекта вот таким образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void snf(Student* copy) {
    
 
 
}
 
 
 
 
void main(int Num, char** Argv) {
 
    setlocale(LC_ALL ,"Russian");
    Student s("Chester");
    snf(&s);
 
    system("pause >> void");
}
А вот если я объявляю объект с помощью кучи вот таким образом Student* s = new Student("Chester");
То как тогда мне передать этой функции объект по ссылке?
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:12     Когда переменная будет const? #8
C++
1
snf(s);
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
04.02.2011, 22:12     Когда переменная будет const? #9
C++
1
snf(s)
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:18  [ТС]     Когда переменная будет const? #10
просто читаю книгу, где сказано так:

" & - говорит, дай мне адрес переменной или еще что-то "
" * - получает значение по адресу & "
Насколько я понял, отсюда следует, что бы получить значение, то есть по ссылке передать объект, то нужно передать на него ссылку, то есть &
А как тогда мне понимать то что Вы привели мне? То есть получается я передаю ему два указателя **. Просто что бы это понять, нужно придумать этому объяснение. Возможно я немного странно выразился... Ну жду ответа экспертов. Спасибо заранее

Добавлено через 1 минуту
то есть при объявлении на объект уже стоит указатель * и в функции такой же, получается ** - просто не могу осмыслить...

Добавлено через 54 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void snf(Student* copy) {
    
 
 
}
 
 
 
 
void main(int Num, char** Argv) {
 
    setlocale(LC_ALL ,"Russian");
    Student* s = new Student("Chester");
    snf(s);
    system("pause >> void");
}
Вот так вот ошибки тоже не выдает

Добавлено через 16 секунд
вот поэтому и спрашиваю
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:19     Когда переменная будет const? #11
Цитата Сообщение от BTR Посмотреть сообщение
То есть получается я передаю ему два указателя **
откуда это следует?
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:20  [ТС]     Когда переменная будет const? #12
ну при объявлении ставим указатель и в функции стоит указатель, получается **
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:21     Когда переменная будет const? #13
Цитата Сообщение от BTR Посмотреть сообщение
то есть при объявлении на объект уже стоит указатель * и в функции такой же, получается ** - просто не могу осмыслить...
ф-ция ожидает получить указатель на тип Студент.
Вы ей и предоставляете указатель на этот тип.
Никакого ** тут нет.
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:24  [ТС]     Когда переменная будет const? #14
а можно подробней? Пожалуйста...
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:25     Когда переменная будет const? #15
Цитата Сообщение от BTR Посмотреть сообщение
вот я передаю по ссылке объект что бы не вызвать копию объекта вот таким образом
Вы не по ссылке объект передаете - вы адрес объекта передаете в функцию.
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:26  [ТС]     Когда переменная будет const? #16
но адрес же передается с помощью &, а так пишет ошибку, вот пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void snf(Student* copy) {
    
 
 
}
 
 
 
 
void main(int Num, char** Argv) {
 
    setlocale(LC_ALL ,"Russian");
    Student* s = new Student("Chester");
    snf(&s);
    system("pause >> void");
}
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:35     Когда переменная будет const? #17
Три способа передачи параметра в функцию:
1.По значению
C++
1
2
3
4
5
6
7
8
9
10
11
void snf(Student copy) 
{
;
}
void main(int Num, char** Argv) {
 
        setlocale(LC_ALL ,"Russian");
        Student s("Chester");
        snf(s);
        system("pause >> void");
}
2.По ссылке
C++
1
2
3
4
5
6
7
8
9
10
11
void snf(Student &copy) 
{
;
}
void main(int Num, char** Argv) {
 
        setlocale(LC_ALL ,"Russian");
        Student s("Chester");
        snf(s);
        system("pause >> void");
}
3.Через указатель
C++
1
2
3
4
5
6
7
8
9
10
11
void snf(Student *copy) 
{
;
}
void main(int Num, char** Argv) {
 
        setlocale(LC_ALL ,"Russian");
        Student s("Chester");
        snf(&s);
        system("pause >> void");
}
В первом случае создается копия объекта. Во втором и третьем вы работаете с тем же объектом посредством переданного в ф-цию адреса(копии не создается). При этом ф-ции абсолютно без разницы как вы при этом создаете объект - динамически ли, в стеке ли...
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:47  [ТС]     Когда переменная будет const? #18
большое спасибо

Добавлено через 8 минут
Блин, как изменить значения первой переменной в данном случае?
C++
1
2
3
4
    char* yang = "This my pointer";
    char* cppy = yang;
    cppy = "mainhen";
    cout << yang;
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 23:11     Когда переменная будет const? #19
Цитата Сообщение от BTR Посмотреть сообщение

Добавлено через 8 минут
Блин, как изменить значения первой переменной в данном случае?
C++
1
2
3
4
        char* yang = "This my pointer";
        char* &cppy = yang;
        cppy = "mainhen";
        cout << yang;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2011, 11:45     Когда переменная будет const?
Еще ссылки по теме:

Вычислить момент времени когда расстояние между лидирующим и замыкающим велосипедистами будет минимальным - C++
Велосипедисты, участвующие в шоссейной гонке, в некоторый момент времени, который называется начальным, оказались в точках, удаленных от...

Будет ли утрачена память, когда конструктор копирования вызывается для уже существующего объекта класса? - C++
class A { char * v; A(); ~A(); A(const A &amp;obj); } ///////////////////// A::A() {

На счету в банке 1000руб.Через каждый месяц размер вклада увеличивался на 2%. Когда будет 1200? - C++
Вот друг ещё дал 3 задачи.Т.к У него задолжности эти 2 задача:Человек открыл счет в банке,вложив 1000руб.Через каждый месяц размер...

Лентяй: по заданному расписанию найти такой день, когда можно будет сдать сразу все долги - C++
Студент Валера являет собой классический пример лентяя. На занятия он практически не ходит, и только в конце семестра появляется в...

Перестало выводить, когда задание списков перевел в конструкторы, когда были просто функции выводило нормально. - C++
Не могу понять почему не выводит список на экран Перестало выводить, когда задание списков перевел в конструкторы, когда были просто...


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

Или воспользуйтесь поиском по форуму:
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
05.02.2011, 11:45     Когда переменная будет const? #20
st_dent
у меня в книжке было написано, что при передаче по указателю создается его копия, но объект по этом адресу изменяется
Yandex
Объявления
05.02.2011, 11:45     Когда переменная будет const?
Ответ Создать тему
Опции темы

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