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

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

Войти
Регистрация
Восстановить пароль
 
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
#1

Размер строки указателя - C++

28.04.2014, 09:10. Просмотров 399. Ответов 10
Метки нет (Все метки)

char *str = new char [10];
str = "123";
sizeof(str) - отображает размер указателя, а как вывести размер самой строки строки?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2014, 09:10     Размер строки указателя
Посмотрите здесь:

Размер указателя - C++
sizeof(void*);// Размер указателя на любой тип равен 8, почему так много? И можно ли как-нибудь узнать сколько под указатель выделено...

Размер указателя short int - C++
Доброе утро. Возник вопрос почему short int = 8 байт? Он же должен занимать 2 байта в 32-х разрядной среде. #include...

Размер указателя на разные типы данных - C++
еще один вопрос к етой теме почуму придавая указателю * prt тип short int или double функция sizeof так же выводит 4 как при int?

Как верно узнать размер указателя ? - C++
СBaseTest* pTest = { new СBaseTest, new СOther }; Нужно узнать размер pTest

Объяснить от чего зависит размер указателя и что такое арифметика указателей - C++
Уважаемые программисты, возник вопрос. По умолчанию указатель любого типа может иметь только 4 байта. Но взглянем на следующий код: ...

Ввод строки через указателя - C++
Проблема в том, что программа вылетает #include<iostream> #include <string> using namespace std; struct client { char...

Возвращение указателя на начало первой строки - C++
Программа отказывается выполнять второй цикл. #include "stdafx.h" #include <iostream> #include <string> #include <fstream> ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
28.04.2014, 09:20     Размер строки указателя #2
Вы не путайте божий дар с яичницей.
Узнать размер си строки просто:
C++
1
2
char str[] = "blablabla";
len = sizeof(str) / sizeof(str[0]);
Если же вы динамически выделяете память, то так сделать нельзя. Да и зачем вы же в курсе какой объем вы выделяете.
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
28.04.2014, 10:03  [ТС]     Размер строки указателя #3
Цитата Сообщение от Ilot Посмотреть сообщение
Если же вы динамически выделяете память, то так сделать нельзя. Да и зачем вы же в курсе какой объем вы выделяете.
насчет простой строки я знаю, интересует именно динамическое выделение, сейчас знаю да, а если я дальше по пересоздам с другой размер, чтобы не искать и не смотреть какой размер, есть ли функция позволяющая узнать размер строки? Но только не длину как показали вы, а именно размер в битах.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
28.04.2014, 10:20     Размер строки указателя #4
Вводите переменную в которой будете хранить размер выделенной памяти. Иначе по указателю это не удасться выяснить. Если я правильно понимаю выделением памяти занимается система и она хранит информацию о занятой и свободной памяти. Как эту информацию из нее вытянуть без понятия
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.04.2014, 10:21     Размер строки указателя #5
D_Ok, в стандарте языка такой возможности не предусмотрено, поэтому реально возможно только запомнить размер в момент выделения памяти, т.е. в момент вызова malloc. Для GNU опять же есть расширение http://man7.org/linux/man-pages/man3...le_size.3.html.
Jewbacabra
Эксперт PHP
2260 / 1924 / 720
Регистрация: 24.04.2014
Сообщений: 5,591
28.04.2014, 10:23     Размер строки указателя #6
Тогда уж так надо делать:
C++
1
2
3
char *str = new char [10];
delete[] str;
str = "123";
или так
C++
1
2
char *str = new char [10];
strcpy(str, "123")
А узнать длину строки можно с помощью функции strlen
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.04.2014, 10:24     Размер строки указателя #7
Jewbacabra, так делать не надо.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
28.04.2014, 10:27     Размер строки указателя #8
fasked, как не надо? Всё правильно сказал! У автора ерунда написана - Jewbacabra исправил!
Цитата Сообщение от D_Ok Посмотреть сообщение
C++
1
2
char *str = new char [10];
str = "123";
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.04.2014, 10:29     Размер строки указателя #9
Kuzia domovenok, тут у всех ерунда написана А не надо записывать в неконстантный указатель строковый литерал. Хотя поправка, использующая strcpy, уже ближе к истине.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
28.04.2014, 11:15     Размер строки указателя #10
Цитата Сообщение от fasked Посмотреть сообщение
А не надо записывать в неконстантный указатель строковый литерал.
указатель на то и указатель. Хочу и указываю на что угодно. Хоть на стек, хоть на кучу, хоть на NULL хоть на литералы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 11:17     Размер строки указателя
Еще ссылки по теме:

Использование указателя для обработки строки - C++
Здравствуйте! Объясните пожалуйста, почему цикл while обрабатывает строку char *B только с указателем? И можно объяснить строку B=q? ...

Добавлять в исходную строку заданной длины новые строки, пока не будет превышен размер исходной строки - C++
Описать строку из 50 символов. В цикле запрашивать у пользователя строки длиной до 10 символов и добавлять их к исходной до тех пор, пока...

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

Размер строки - C++
Дается строка в одном файле. Допустим, data1.txt . Нужно найти длину строки и записать в другой файл( data2.txt). Хочется по простому, на...

Размер строки в бинарном режиме! - C++
Здорова господа!!! Имеется строка типа string в которую считано изображение. Как можно узнать сколько будет эта же строка занимать в...


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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.04.2014, 11:17     Размер строки указателя #11
Kuzia domovenok, так я и не спорю с тем, что указывать можно куда угодно. Проблема в том, что после такого объявления может возникнуть желание изменить что-либо в литерале, а это уже UB.
Yandex
Объявления
28.04.2014, 11:17     Размер строки указателя
Ответ Создать тему
Опции темы

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