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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.80
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
#1

Размер символьного массива - C++

14.06.2012, 10:43. Просмотров 4208. Ответов 24
Метки нет (Все метки)

Всех приветствую!

Прошу простить, что тревожу столь банальными вопросами, но сам додумать не могу...

Задан массив:
C++
1
2
char *a = new char;
a="qwnsjfnsdjfnsfsf;ajsdnf";
Необходимо узнать не длину этой строки, а сколько байт занимает данный массив в памяти. strlen() вернет длину, которая будет эквивалентна размеру данного массива, т.к. 1 char = 1 байт, это понятно. Но как обратиться именно к размеру в памяти?

На мой глупый ум приходит только:

C++
1
size_t n=sizeof(*a)*strlen(a);
Подскажите, пожалуйста...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2012, 10:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Размер символьного массива (C++):

Почему размер символьного массива должен быть больше на 1 символ, а не на 2? - C++
Привет! Пока читал учебник Шилдта, возник вопрос: Почему Герберт Шилдт говорит, что следует задать длину на один символ больше, хотя...

Заполнение массива значениями из символьного массива - C++
есть массив символов char z;есть целочисленный массив int b;каждый символ z это цифра 0-9 нужно в b записать символ z(не код символа а...

Инициализация символьного массива - C++
Не получается инициализировать в программе символьный массив #include <iostream> using namespace std; struct names{ char...

Обработка символьного массива - C++
Итак, задание: Без использования конструкции string написать программу ввода и вывода необходимого текста с клавиатуры. Ввод...

Перебор символьного массива - C++
Помогите, не могу написать прграмму которая добавляет символ. Например: вводим D:\myfolder\secondfolder\ , а выводим...

Сортировка символьного массива - C++
Помогите пожалуйста написать прогу на C++!!! Нужно отортировать матрицу из симовлов по первому столбцу, в случае если есть повторяющиеся...

24
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
14.06.2012, 12:54  [ТС] #16
Цитата Сообщение от The_Immortal Посмотреть сообщение
призываю абстрагироваться
Мм... Видимо, с этим сложно...)

Ладно, пойду другим путем



Jupiter,
Вот в этом коде (только не исправляйте его плиз ):

C++
1
2
const wchar_t* a = L"qwnsjfnsdjfnsfsf;ajsdnf";
size_t n = sizeof(*a) * (wcslen(a) + 1)
Что вернет sizeof(*a) ? Не будет ли это эквивалентно sizeof(a[0]), что в свою очередь эквивалентно sizeof(wchar_t) ?
0
Jupiter
Каратель
Эксперт С++
6566 / 3987 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.06.2012, 12:56 #17
Цитата Сообщение от The_Immortal Посмотреть сообщение
Что вернет sizeof(*a) ?
размер wchar_t
0
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
14.06.2012, 12:57  [ТС] #18
Jupiter,
Цитата Сообщение от The_Immortal Посмотреть сообщение
Не будет ли это эквивалентно sizeof(a[0]), что в свою очередь эквивалентно sizeof(wchar_t) ?
0
Jupiter
Каратель
Эксперт С++
6566 / 3987 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.06.2012, 13:03 #19
Цитата Сообщение от The_Immortal Посмотреть сообщение
Не будет ли это эквивалентно sizeof(a[0]), что в свою очередь эквивалентно sizeof(wchar_t) ?
будет, в том смысле что оба вернут размер wchar_t в данном случае
0
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
14.06.2012, 13:08  [ТС] #20
Jupiter,
Цитата Сообщение от Jupiter Посмотреть сообщение
будет, в том смысле что оба вернут размер wchar_t в данном случае
Ага, я это и имел в виду

Большущее Вам спасибо! Я кажется разобрался... И откуда у Вас столько терпения?
0
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
24.06.2012, 16:37  [ТС] #21
Ребят, а объясните, пожалуйста, каким образом в данном примере резервируется место под строку, которая будет вводиться?

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    char *a;
    cin >> a;
    cout << endl << a << endl;
    system("pause");
    return 0;
}
- я специально не задаю размер строки, ввожу приличный текст и полностью получаю его в ответ, не нарываясь ни на какой AV - почему?
0
Jupiter
Каратель
Эксперт С++
6566 / 3987 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.06.2012, 22:42 #22
Цитата Сообщение от The_Immortal Посмотреть сообщение
не нарываясь ни на какой AV
это называется "не повезло"
1
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
24.06.2012, 23:28  [ТС] #23
Jupiter, т.е. в теории я рано или поздно таким образом нарвусь на закрытый блок памяти, так?
0
Jupiter
Каратель
Эксперт С++
6566 / 3987 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.06.2012, 23:37 #24
именно так
1
The_Immortal
1554 / 490 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
24.06.2012, 23:45  [ТС] #25
Jupiter, блин, сколько не пытаюсь - не получается )) Просто верить - одно, а на практике ощутить - другое...
Ну ладно, замнем для ясности
0
24.06.2012, 23:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2012, 23:45
Привет! Вот еще темы с ответами:

Сортировка символьного массива - C++
Данная программа, по идее, должна сортировать символьный массив пузырьком. Но почему-то не сортирует. #include &lt;iostream&gt; #include...

Инициализация символьного массива - C++
Проблема в том, что выдает ошибку &quot;требуется выражение&quot; - непосредственно внутри конструктора при попытке присвоить символьному массиву...

Обработка символьного массива - C++
Задание по вычислительно

Удалить * из символьного массива - C++
Надо проверить текст из Edit1 и удалить из него * void __fastcall TForm1::Button1Click(TObject *Sender) { int i; char...


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

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

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