КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Символьные данные и строки
Указатель на void
Например:
void* pv; // указатель на объект произвольного типа int g(void); // функция без аргументов, равносильно int g(); void f(); // f не возвращает значения
Указатель void* может указывать на объект любого типа, если этот объект объявлен без спецификаторов const или volatile.
Например: void* malloc(unsigned size); // библиотечная функция – // аналог оператора new в языке C void free(void*); //библиотечная функция – //аналог оператора delete в языке C void f() // распределение памяти в стиле языка C { int* pi = (int*)malloc(10*sizeof(int)); char* pc = (char*)malloc(10); //... free(pi); free(pc); } В программе синтаксис: (тип) выражение - используется для задания операции преобразования выражения к другому типу. Следовательно, перед присваиванием pi тип void*, возвращаемый в первом вызове malloc(), преобразуется к типу int.
Для символьных данных в С++ введен тип char. Описание символьных переменных: char список_имен_переменных;Пример 63 const char c=’c’; /*символ – занимает один байт, его значение не меняется*/ char a,b; /*символьные переменные, занимают по одному байту, значения меняются*/ const char *s=“Пример строки\n“; //текстовая константа
Строка – это последовательность символов, заключенная в двойные кавычки (" "). Размещая строку в памяти, транслятор автоматически добавляет в ее конце символ '\0' (нулевой символ или нулевой байт, который является признаком конца строки). В записи строки может быть и один символ: "А" (заключен в двойные кавычки), однако, в отличие от символьной константы 'А' (используются апострофы), длина строки "А" равна 2 байтам. В языке С++ строка – это пронумерованная последовательность символов (массив символов), она всегда имеет тип char[]. Все символы строки нумеруются, начиная с нуля. Символ конца строки также нумеруется – ему соответствует наибольший из номеров. Количество элементов в таком массиве на 1 больше, чем изображение соответствующей строки, так как в конец строки добавлен нулевой символ '\0' (рис. 7.1).
Присвоить значение строке с помощью оператора присваивания нельзя, так как для массивов не определена операция прямого присваивания. Поместить строку в символьный массив можно либо при вводе, либо с помощью инициализации: char s1[] = "ABCDEF"; //инициализация строки char s2[]={'A','B','C','D','E','F','\0'};//инициализация строки Операция вычисления размера (в байтах) sizeof действует для объектов символьного типа и строк. Пример 64 Определение размера строк #include "stdafx.h" #include <iostream> using namespace std; int main() { char s1[10]="string1"; int k=sizeof(s1); cout<<s1<<"\t"<<k<<"\n"; char s2[]="string2"; k=sizeof(s2); cout<<s2<<"\t"<<k<<"\n"; char s3[]={'s','t','r','i','n','g','3','\0'}; /*окончание строки '\0' следует соблюдать, формируя в программах строки из отдельных символов*/ k=sizeof(s3); cout<<s3<<"\t"<<k<<"\n"; char *s4="string4"; //указатель на строку, ее нельзя изменить k=sizeof(s4); cout<<s4<<"\t"<<k<<"\n"; system("pause"); return 0; } Результат выполнения программы: string1 10 – выделено 10 байтов, в том числе под '\0' string2 8 – выделено 8 байтов (7 + 1 байт под '\0') string3 8 – выделено 8 байтов (7 + 1 байт под '\0') string4 4 – размер указателя
Дата добавления: 2014-11-29; Просмотров: 451; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |