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

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

Войти
Регистрация
Восстановить пароль
 
Dimarik__
21 / 21 / 1
Регистрация: 29.04.2010
Сообщений: 444
#1

_itoa,вопрос по char* - C++

04.03.2011, 21:39. Просмотров 1028. Ответов 2
Метки нет (Все метки)

В MSDN описана функция

char *_itoa(
int value,
char *str,
int radix
);

В примере

C++
1
2
3
4
5
6
7
8
char buffer[65];
   int r;
   for( r=10; r>=2; --r )
   {
     _itoa( -1, buffer, r ); // C4996
     // Note: _itoa is deprecated; consider using _itoa_s instead
     printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
   }
Если же я вместо char buffer[65] напишу char* buffer, у меня программа даст недопустимую ошибку (обрщение к непроинициализированному указателю) при выполнении, если так char* buffer = "": - То
обращение по несуществующей памяти.
Получается, что когда я пишу char* buff = " "; у меня компилятор выделяет участок памяти, равный числу символов в си-строке? Или как? Можно как-то сделать так, чтобы _itoa работала не с char[], а с char*?
P.S. хотя по сути указатель char * buff указывает на первый символ массива buff....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2011, 21:39     _itoa,вопрос по char*
Посмотрите здесь:

Вопрос по Char - C++
Вот в чем суть я токо изучаю С++ токо неделю (самоучка по книге Шилдта) раньше програмировал на Паскале. Как я понял переменная типа Char...

_itoa() и двумерные массивы - C++
#include <iostream> using namespace std; void main() { int a={1,2,3,4,5}; char b; for(int i=0;i<5;i++) {

Вопрос про char - C++
Пожалуйста обьясните доступным языком в чем разница между объявлениями, и какие когда лучше использовать char a; char *c; char b=new...

Вопрос об особенности char и конструкторах - C++
1. Хочу вывести на экран таблицу символов ascii: #include <iostream> int main() { unsigned short T; for...

Невозможно преобразовать char* в char - C++
Как исправить ошибку?

Char *(UTF-8) -> char *(ANSI) - C++
Есть строка в кодировке UTF-8(если не ошибаюсь) типа char * Вот так ее я вижу в MSVC++10 - комментарии(оригинал - комментарии)...

Argument of type char is incompatible with parameter of type char * - C++
Столкнулся с ошибкой, не получается никак исправить #define DUTIES 100 class POSITIONDLL_API Position { private: char...

Ошибка: "invalid conversion from char* to char" - C++
Граждане,товарищи изучаю C++ и зациклился на проблеме,мне надо подсчитать количество букв в массиве введённом с клавиатуры#include...

Cannot convert from 'char *' to 'char' - C++
1. cannot convert from 'char *' to 'char' 2. '__int64 atoll(const char *)': cannot convert argument 1 from 'char' to 'const char *' ...

из char в const char? - C++
Всем привет, раньше писал на с++ но сейчас уже много забылось поэтому хотелось бы узнать ответ на такой вопрос... есть небольшой код: ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
04.03.2011, 21:45     _itoa,вопрос по char* #2
Цитата Сообщение от Dimarik__ Посмотреть сообщение
Можно как-то сделать так, чтобы _itoa работала не с char[], а с char*?
Нужно выделить память под массив символов с помощью функции malloc.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
05.03.2011, 03:02     _itoa,вопрос по char* #3
Цитата Сообщение от Dimarik__
Получается, что когда я пишу char* buff = " "; у меня компилятор выделяет участок памяти, равный числу символов в си-строке?
нет, компилятор создаёт переменную типа char *, потом в отдельном месте создаёт строку " "
(это равно символьному массиву { ' ', '\0' })
и потом адрес первого символа этой строки записывает в переменную (адрес пробела)
и памяти выделяется только необходимое количество для хранения этого адреса
(память, которую занимает строка, вообще не относится к переменной)
Ответ Создать тему
Опции темы

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