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

Работа с массивом char - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написание звукового движка http://www.cyberforum.ru/cpp-beginners/thread152523.html
Товарищи, приветствую. Сабж. Очень серьёзное дело, требующее не менее серьёзного подхода. С чего начать? Куда копать? В чём отличия интерфейсов DirectSound, waveIn/waveOut и прочих возможных? В...
C++ C++ .net ? Скажите может быть C++ вместе с .net ? или это всё отдельно ? http://www.cyberforum.ru/cpp-beginners/thread152513.html
C++ Создать шаблонный класс-контейнер Array, который представляет собой массив
Создать шаблонный класс-контейнер Array, который представляет собой массив, позволяющий хранить объекты заданного типа. Класс должен реализовывать следующие функции: Вот пытаюсь создать класс...
какой компилятор посоветуете C++
Сел изучать С по книге Б.Керниган и Д.Ритчи "Язык прогр. Си", програмные примеры в книге описаны на Линуксе, что для меня не совсем удобно. Какой компилятор из под винды посоветуете для примеров...
C++ Центральность графа (переделка с C#) http://www.cyberforum.ru/cpp-beginners/thread152484.html
У меня есть алгоритм, по которому надо найти промежуточную центральность каждой вершины графа (если дана матрица смежности). (стр 10). Я нашел // Copyright (c) Microsoft Corporation. All rights...
C++ В каком заголовочном файле находятся функции Sleep() и delay() и как правильно их использовать? в каком хедере они находятся и как правильно их использовать Добавлено через 1 минуту дядя яндекс ничего не подсказал =( подробнее

Показать сообщение отдельно
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
09.07.2010, 15:28
[Freeman], когда используется strcpy, она копирует все символы из source по необходимому адресу (destination). Если мы поступим так:
C
1
2
char* s;
strcpy(s, "Hello, world");
возникнет тот же пресловутый Access violation, так как указатель не инициализирован, он не указывает ни на какую область памяти. То есть, выделяя память под строку, мы получаем указатель на область памяти, которую можем менять:
C
1
2
s = (char*)malloc(sizeof(char) * 256);
strcpy(s, "Hello, world");
На C++:
C++
1
2
char* s = new char[256];
strcpy(s, "Hello, world");
Можно сделать по-другому:
C
1
2
char s[256];
strcpy(s, "Hello, world");
Здесь происходит что-то подобное, только вместо Кучи, строка хранится в стеке.

И вообще, присваивать строковой литерал указателю напрямую нельзя, кроме случая инициализации константы:
C
1
const char* = "Hello, world";
Нужно использовать strcpy или, что желательнее, strncpy, которая позволяет контролировать количество копируемых символов.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru