Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Optimus11
5 / 5 / 0
Регистрация: 10.01.2017
Сообщений: 320
1

Разница между обьявлениями чаров

06.02.2019, 08:55. Просмотров 1326. Ответов 29
Метки нет (Все метки)

Здравствуйте,

Подскажите пожалуйста, есть ли разница между эти двумя обьявлениеями Char`ов:

C++
1
2
3
4
5
6
7
8
9
10
11
char textos1[] = "A1:A1";
 
и
 
char textos[5];
        
textos[0] = 'A';
textos[1] = '1';
textos[2] = ':';
textos[3] = 'A';
textos[4] = '1';
Если применить к ним strlen, то в одном случае (textos1) получается, что число "5", что совпадает с числом символом, во втором случае (textos) - получается 21 символ ?

Получается разница между двумя этими записями есть ? Но какая ?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2019, 08:55
Ответы с готовыми решениями:

Разница между С и С++
Если не брать во внимание объекты и классы, то разница состоит только лишь в cin, cout и директивах?

Разница между 0 и 00 ?
Как заставить программу различать 0 и 00 (ноль и два ноля, как в рулетке)? Вариант с заменой 00...

Разница между --f и f--
Не понимаю, читал, что разницы между --f и f-- вообще никакой нет, но при компиляции программы...

Разница между != и <=
Здравствуйте! Писал программу с использованием QuickSort и заинтересовала такая вещь: void...

Разница между if else и else if
Привет, у меня возник &quot;нубский&quot; вопрос. Этот код, это же соркащенная версия нижнего? int...

29
DrOffset
10915 / 5814 / 1432
Регистрация: 30.01.2014
Сообщений: 9,357
06.02.2019, 16:41 21
Цитата Сообщение от Azazel-San Посмотреть сообщение
А вы думаете нужен ли VLA в С++?
Что вам мое мнение даст?

Лучше вот конфу почитайте: https://groups.google.com/forum/#!topic/comp.std.c++/K_4lgA1JYeg
0
Azazel-San
Mental handicap
1079 / 537 / 154
Регистрация: 24.11.2015
Сообщений: 2,192
Завершенные тесты: 1
06.02.2019, 16:51 22
Цитата Сообщение от DrOffset Посмотреть сообщение
Что вам мое мнение даст?
Как это что? Интересно же. Ваше мнение должно быть ничем не хуже того что описывают сильные умы, по ссылке которую вы скинули ниже.
Цитата Сообщение от DrOffset Посмотреть сообщение
Лучше вот конфу почитайте: https://groups.google.com/forum/#!topic/comp.std.c++/K_4lgA1JYeg
Но за ссылку тоже спасибо)

DrOffset, Я вот себе задал вопрос, допустим я бы хотел написать аллокатор на стеке, максимально эффективный и безопасный и не только для массивов, как это можно сделать, в отрыве от STL? Типо как для пулла объектов и что бы все это можно было менеджить?
0
DrOffset
10915 / 5814 / 1432
Регистрация: 30.01.2014
Сообщений: 9,357
06.02.2019, 17:01 23
Цитата Сообщение от Azazel-San Посмотреть сообщение
Ваше мнение должно быть ничем не хуже того что описывают сильные умы, по ссылке которую вы скинули ниже.
Мое мнение отличается тем, что ни на что не влияет. В отличие от товарищей по ссылке. Сила голоса, так сказать, отличается.

Цитата Сообщение от Azazel-San Посмотреть сообщение
Я вот себе задал вопрос
Банальную вещь скажу, но такие вопросы в отрыве от задачи мало смысла имеют
0
Azazel-San
Mental handicap
1079 / 537 / 154
Регистрация: 24.11.2015
Сообщений: 2,192
Завершенные тесты: 1
06.02.2019, 17:10 24
Цитата Сообщение от DrOffset Посмотреть сообщение
Мое мнение отличается тем, что ни на что не влияет.
Ну, так и скажите что не хотите говорить. Причем вырвали не ту фразу из моего ответа.
Цитата Сообщение от DrOffset Посмотреть сообщение
Сила голоса, так сказать, отличается.
Что-то эта сила голоса уже с года так 2013 ничего не дает.
Цитата Сообщение от DrOffset Посмотреть сообщение
Банальную вещь скажу, но такие вопросы в отрыве от задачи мало смысла имеют
А если что-то универсальное?
0
06.02.2019, 17:10
Renji
2513 / 1719 / 515
Регистрация: 05.06.2014
Сообщений: 4,981
06.02.2019, 17:22 25
Цитата Сообщение от Azazel-San Посмотреть сообщение
Как сказать, ну наверное от самого вектора не имеет смысла. Тем не менее что мешает сделать умную обертку над alloca?
Механизм работы стека мешает. После того как конструктор обертки завершен, стек должен быть приведен в исходное состояние. А значит все сделанные внутри конструктора вызовы alloca будут откачены. Если же мы обойдем эту проблему с помощью каких-то компиляторозависимых средств, так это VLA и получится. Компилятор массив как-то создает, а программист стандартными средствами повторить фокус не может.
Цитата Сообщение от Azazel-San Посмотреть сообщение
А это обошлось бы только малой кровью sizeof'a?
Еще не будут работать конструкции вида decltype(firstVLA) secondVLA. Правда, слабо себе представляю кому это будет мешать.
0
Azazel-San
Mental handicap
1079 / 537 / 154
Регистрация: 24.11.2015
Сообщений: 2,192
Завершенные тесты: 1
06.02.2019, 18:00 26
Цитата Сообщение от Renji Посмотреть сообщение
Компилятор массив как-то создает, а программист стандартными средствами повторить фокус не может.
Там же вроде просто указатель стека смещают не на константу, а на переменную?
Цитата Сообщение от Renji Посмотреть сообщение
Еще не будут работать конструкции вида decltype(firstVLA) secondVLA. Правда, слабо себе представляю кому это будет мешать.
По ссылке выше, господа видят больше проблем.
Что-то я думаю VLA не пустять в С++, по крайней мере в таком виде в каком он был в C99.
0
DrOffset
10915 / 5814 / 1432
Регистрация: 30.01.2014
Сообщений: 9,357
06.02.2019, 18:14 27
Цитата Сообщение от Azazel-San Посмотреть сообщение
Что-то эта сила голоса уже с года так 2013 ничего не дает.
Вот именно что дает. Дает не включать подобные решения в стандарт.
Ведь было время когда это почти вошло, и даже побыло немного в черновике. И даже в GCC успели добавить это в реализацию core language. Но потом сила голоса таки решила, что не надо

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Azazel-San Посмотреть сообщение
Причем вырвали не ту фразу из моего ответа.
А какую надо было? :)

0
Azazel-San
Mental handicap
1079 / 537 / 154
Регистрация: 24.11.2015
Сообщений: 2,192
Завершенные тесты: 1
06.02.2019, 18:17 28
Цитата Сообщение от DrOffset Посмотреть сообщение
Дает не включать подобные решения в стандарт.
Вижу у вас таки есть веское мнение по этому поводу, например ув. Renji считает что добавление VLA не понесет почти никаких потерь, а я вот что-то сомневаюсь. Обошлось бы только sizeof и decltype?
Цитата Сообщение от DrOffset Посмотреть сообщение
и даже побыло немного в черновике
Да я это видел.
Цитата Сообщение от DrOffset Посмотреть сообщение
Но потом сила голоса таки решила, что не надо
Но так и не понял почему? Какие проблемы были?
0
DrOffset
10915 / 5814 / 1432
Регистрация: 30.01.2014
Сообщений: 9,357
06.02.2019, 18:34 29
Цитата Сообщение от Azazel-San Посмотреть сообщение
А если что-то универсальное?
Разве такое вообще бывает?

Существующими средствами вы можете выделить буфер на стеке (стандартными или платформозависимыми способами) и навесить на него фасад аллокатора. Дальше как обычно. В любом случае для этого нужно четко понимать цели и выгоду от этих решений.

Добавлено через 14 минут
Цитата Сообщение от Azazel-San Посмотреть сообщение
Вижу у вас таки есть веское мнение по этому поводу, например ув. Renji считает что добавление VLA не понесет почти никаких потерь, а я вот что-то сомневаюсь.
Я, кажется, четко дал понять, что не собираюсь публично занимать какую-либо сторону, т.к. считаю подобные диалоги бестолковыми. Холивары - это потеря времени.

Цитата Сообщение от Azazel-San Посмотреть сообщение
Но так и не понял почему? Какие проблемы были?
Проблемы дизайна и отсутствия единой точки зрения на вопрос.
Последнее известнео мне резюме было таким:
Цитата Сообщение от Meeting in Lenexa, May 2015
The Array TS, which contains a language feature called “arrays of runtime bound” (ARBs) that’s essentially a toned-down version of C’s variable-length arrays (VLAs), and a library class dynarray for wrapping such a thing into a container interface, has been in limbo for the past year, as attempts to implement dynarray ran into difficulties, and proposals trying to replace it with something implementable got shot down one after the other.

At this meeting, EWG reviewed the status quo and addressed the question of what will happen to the Arrays TS going forward.

The status quo is this:

* Many people want simple stack arrays. Emphasis on simple (no “making it a member of a class”) and stack (no “it might be on the stack or it might be on the heap” business.)
* Some people want to be able to wrap such things into a class interface, so it knows its size, and doesn’t automatically decay to a pointer.
* Some people additionally want to be able to copy this class and make it a member of other classes.
* Implementation attempts have essentially demonstrated that this latter thing is impossible.

Given this state of affairs, the features currently in the Arrays TS are not going to be accepted in their current form; EWG recommended stripping the TS of its current contents, and waiting for a workable proposal to come along.

A promising direction for such a workable proposal is to have a “magic type” that acts like an ARB but knows its size and does not decay to a pointer (the implementable features that people wanted from a class wrapper). The type in question could only used for a local variable, and the underlying ARB itself wouldn’t be exposed. Several people expressed an interest in collaborating on a proposal in this direction.
1
Renji
2513 / 1719 / 515
Регистрация: 05.06.2014
Сообщений: 4,981
06.02.2019, 23:49 30
Цитата Сообщение от Azazel-San Посмотреть сообщение
Там же вроде просто указатель стека смещают не на константу, а на переменную?
1) Есть такая штука как "соглашение о вызове". Популярные в данный момент соглашения говорят что сместил указатель стека - изволь после return вернуть как было. А если нарушать соглашения, то программа и грохнуться может, так как никто такой подлянки не ожидал.
2) return раскрывается в ассемблерный ret, а ret ищет адрес возврата из функции строго в макушке стека. Если указатель стека куда-то сместили, то и ret улетит куда-то не туда.

Конкретно же alloca раскрывается в builtin версию, которая таки гвоздями прибита к конкретному компилятору.
Цитата Сообщение от Azazel-San Посмотреть сообщение
По ссылке выше, господа видят больше проблем.
По факту gcc уже поддерживает VLA в C++ коде в качестве расширения языка. И никаких проблем почему-то не наблюдается.
1
06.02.2019, 23:49
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2019, 23:49

Разница между gets() и fgets()
Учу я С++ по книжке, оттуда переписываю программу. Функция gets(), которая была в книге,...

вчем разница между с++ и ++с
Не как него могу понять в чем разница между с++ и ++с ? с - счетчик. просто пример: int main() {...

Разница между DEV и VS
Подскажите пожалуйста в чем проблема, писал задания на DEV C++, теперь начал работать на VS, но они...


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

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

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