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

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

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

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

04.02.2011, 22:01. Просмотров 1159. Ответов 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? (C++):

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

Хочу разобраться с прототипами функций, const но переменная изменяется - C++
Оригиналы хэш функций тут - назовем это ENG статьёй Я так подозреваю написано это на С, но вполне без изменений запустится на С++ ...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:05 #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 #3
потому что ты объявил строку, а не символ. Либо объяви указатель
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
04.02.2011, 22:05 #4
BTR, Перемнную типа char записывают в одинарные кавычки, а вот строковый литерал - в двойные, то есть так:
C
1
char *test = "t";
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:05  [ТС] #5
если я непонятно изложил вопрос, то скажите... (если что извиняюсь)
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:06 #6
Цитата Сообщение от BTR Посмотреть сообщение
если я непонятно изложил вопрос, то скажите... (если что извиняюсь)
да, а в чём, собственно, вопрос?
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:10  [ТС] #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 #8
C++
1
snf(s);
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
04.02.2011, 22:12 #9
C++
1
snf(s)
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:18  [ТС] #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 #11
Цитата Сообщение от BTR Посмотреть сообщение
То есть получается я передаю ему два указателя **
откуда это следует?
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:20  [ТС] #12
ну при объявлении ставим указатель и в функции стоит указатель, получается **
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:21 #13
Цитата Сообщение от BTR Посмотреть сообщение
то есть при объявлении на объект уже стоит указатель * и в функции такой же, получается ** - просто не могу осмыслить...
ф-ция ожидает получить указатель на тип Студент.
Вы ей и предоставляете указатель на этот тип.
Никакого ** тут нет.
BTR
8 / 8 / 1
Регистрация: 01.11.2010
Сообщений: 157
04.02.2011, 22:24  [ТС] #14
а можно подробней? Пожалуйста...
st_dent
64 / 64 / 3
Регистрация: 05.07.2010
Сообщений: 219
04.02.2011, 22:25 #15
Цитата Сообщение от BTR Посмотреть сообщение
вот я передаю по ссылке объект что бы не вызвать копию объекта вот таким образом
Вы не по ссылке объект передаете - вы адрес объекта передаете в функцию.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2011, 22:25
Привет! Вот еще темы с ответами:

clrscr(); не определен данный тип и const MAX_ELEMENTS = 4; отсутсвует тип int когда я его туда вписываю у меня больше ошибок вылазит - C++
#include "stdafx.h" #include <ctime> #include <stdio.h> #include <conio.h> int main() { const MAX_ELEMENTS = 4; ...

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.02.2011, 22:25
Ответ Создать тему
Опции темы

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