КАТЕГОРИИ: Архитектура-(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) |
Указатели
W[25], //слово mas[10][25]; //массив слов puts(“\nвведите строку”); gets(s); int k=0, t=0, i, len, j; len=strlen(s); while(t<len) { for (j=0, i=t; s[i]!=’ ‘; i++, j++) w[j]=s[i];//формируем слово до пробела w[j]=’/0’; //формируем конец строки strcpy(mas[k],w); //копируем слово в массив k++; //увеличиваем счетчик слов t=i+1; //переходим к следующему слову в исходной строке } strcpy(s,””); //очищаем исходную строку for(t=0; t<k; t++) if(mas[t][0]<’0’&&mas[t][0]>’9’) //если первый символ не цифра { strcat(s, mas[t]); //копируем в строку слово strcat(s, ” “); //копируем в строку пробел } puts(s); //выводим результат }
Указатели являются специальными объектами и предназначены для хранения адресов памяти. Когда компилятор обрабатывает оператор определения переменной, например, int i=10;, то в памяти выделяется участок памяти в соответствии с типом переменной (int = 4 байта для 32-х разрядных ЭВМ) и записывает в этот участок указанное значение. Все обращения к этой переменной компилятор заменит на адрес области памяти, в которой хранится эта переменная. Программист может определить собственные переменные для хранения адресов областей памяти. Такие переменные называются указателями. Указатель не является самостоятельным типом, он всегда связан с каким-то другим типом. Указатели делятся на две категории: указатели на объекты и указатели на функции. Рассмотрим указатели на объекты, которые хранят адрес области памяти, содержащей данные определенного типа. В простейшем случае объявление указателя имеет вид: тип *имя; Тип может быть любым, кроме ссылки. Примеры: int *i; double *f, *ff; char *c;
Размер указателя зависит от модели памяти. Можно определить указатель на указатель: int**a; Указатель может быть константой или переменной, а также указывать на константу или переменную. Примеры: int i; //целая переменная const int ci=1; //целая константа int *pi; //указатель на целую переменную const int *pci; //указатель на целую константу Указатель можно сразу проинициализировать: int *pi=&i; //указатель на целую переменную const int *pci=&ci; //указатель на целую константу int*const cpi=&i; //указатель-константа на целую переменную const int* const cpc=&ci; //указатель-константа на целую константу
Если модификатор const относится к указателю (т.е. находится между именем указателя и *), то он запрещает изменение указателя, а если он находится слева от типа (т.е. слева от *), то он запрещает изменение значения, на которое указывает указатель. Для инициализации указателя существуют следующие способы: 1) с помощью операции получения адреса int a=5; int *p=&a; или int p(&a); 2) с помощью проинициализированного указателя int *r=p; 3) адрес присваивается в явном виде char*cp=(char*)0х В800 0000; где 0х В800 0000 – шестнадцатеричная константа, (char*) – операция приведения типа. 4) присваивание пустого значения: int*N=NULL; int *R=0;
Дата добавления: 2015-06-04; Просмотров: 334; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |