Строки. Инициализация строки

Содержание

Слайд 2

Строки Строка — последовательность (массив) символов. Строки в С/С++ представляются как

Строки

Строка — последовательность (массив) символов. 
Строки в С/С++ представляются как массивы элементов

типа char, заканчивающиеся нуль-терминатором \0
Символьные строки состоят из набора символьных констант заключённых в двойные кавычки.
При объявлении строкового массива необходимо учитывать наличие в конце строки нуль-терминатора, и отводить дополнительный байт под него.
Слайд 3

Пример char string[10]; string – имя строковой переменной 10 – размер

Пример

char string[10];
string – имя строковой переменной
10 – размер массива, в

данной строке может поместиться 9 символов , последнее место отводится под нуль-терминатор.
Слайд 4

Строки Строка может содержать символы, цифры и специальные знаки. Строки заключаются

Строки

Строка может содержать символы, цифры и специальные знаки.
Строки заключаются в

двойные кавычки.
Имя строки является константным указателем на первый символ.
Слайд 5

Инициализация строки char string[10] = "abcdefghf"; Посимвольная инициализация строки: char string[10]

Инициализация строки

char string[10] = "abcdefghf";
Посимвольная инициализация строки:
char string[10] = {'a', 'b',

'c', 'd', 'e', 'f', 'g', 'h', 'f', '\0'};
Десятый символ - это нуль-терминатор.
Инициализация строки без указания размера:
char string[] = "abcdefghf";
Слайд 6

Инициализация строки Массив строк: char s[3][25] = {"Пример", "использования", "строк"}; Массив

Инициализация строки

 Массив строк:
char s[3][25] = {"Пример", "использования", "строк"};
Массив из 3х строк

по 25 байт каждая.
Слайд 7

Возможности работы со строками функции стандартной библиотеки С; библиотечный класс С++ string;

Возможности работы со строками

функции стандартной библиотеки С;
библиотечный класс С++ string;

Слайд 8

Функции стандартной библиотеки С копирования строк (strcpy, strncpy); сравнения (strcmp); объединения

Функции стандартной библиотеки С

копирования строк (strcpy, strncpy);
сравнения (strcmp);
объединения строк (strcat, strncat);
поиска

подстроки (strstr);
поиска вхождения символа (strchr, strrchr, strpbrk);
определения длины строки (strlen);
и др.
Слайд 9

Заголовочные файлы , - содержат объявления функций для классификации и преобразования

Заголовочные файлы

, - содержат объявления функций для классификации и преобразования

отдельных символов;
, - содержат в себе функции, занимающиеся выделением памяти, контроль процесса выполнения программы, преобразования типов и другие.
Слайд 10

Ввод – вывод строк

Ввод – вывод строк

Слайд 11

Использование объектов cout и cin Программа 8. Ввод-вывод строк с использованием объектов cout, cin

Использование объектов cout и cin

Программа 8.
Ввод-вывод строк с использованием объектов cout,

cin
Слайд 12

// Пример 1 // Ввод-вывод строк с использованием объектов cout, cin.

// Пример 1
// Ввод-вывод строк с использованием объектов cout, cin.
#include
#include


using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
char str[80];
system ("cls");
cout << "Введите строку символов str: ";
cin >> str;
cout << "Вы ввели строку: " << str << endl;
while (!kbhit());
return 0;
}
Слайд 13

Использование методов getline или get класса iostream Функции предназначены для ввода

Использование методов getline или get класса iostream

Функции предназначены для ввода

данных из потока, например, для ввода данных из консольного окна.
Формат вызова методов:
cin.getline (s,n)
cin.get(s,n)
Слайд 14

Использование методов getline или get класса iostream Метод getline считывает из

Использование методов getline или get класса iostream

Метод getline считывает из

входного потока (n-1) символов или менее и записывает их в строковую пере­менную s.
Символ перевода строки также считывается из входного потока, но не записывается в строковую переменную, вместо него размещается завер­шающий \0.
Символ перевода строки ‘\n’ появляется во входном потоке после нажатия клавиши Enter.
Метод get работает аналогично, но не оставляет в потоке символ перевода строки. В строковую переменную добавляется завершающий \0.
Слайд 15

Программа 9 Ввод-вывод строк с использованием методов getline и get

Программа 9

Ввод-вывод строк с использованием методов getline и get

Слайд 16

// Пример 2 // Ввод-вывод строк с использованием методов getline и

// Пример 2
// Ввод-вывод строк с использованием методов getline и get
#include


#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
char str[80];
const int n=80;
cout << "Введите строку символов str: ";
cin.getline (str,n);
cout << "Вы ввели строку: " << str << endl;
cout << "Введите строку символов str: ";
cin.get (str,n);
cout << "Вы ввели строку: " << str << endl;
while (!kbhit());
return 0;
}
Слайд 17

Функции ввода-вывода библиотеки С scanf(); printf (); gets (); puts ().

Функции ввода-вывода библиотеки С

scanf();
printf ();
gets ();
puts ().

Слайд 18

scanf() Является процедурой ввода общего назначения, считывающей данные из пото­ка stdin.

scanf()

Является процедурой ввода общего назначения, считывающей данные из пото­ка stdin.
Может

считывать данные всех базовых типов и автоматически конвертировать их в нужный внутренний формат.
Формат:
scanf(const char *format, arg-list)
Слайд 19

scanf()

scanf()

Слайд 20

Примеры scanf() scanf("%d", &co); - считать целое число и присвоить его

Примеры scanf()

scanf("%d", &co); - считать целое число и присвоить его переменной

сo
scanf("%s", address); - считать строку и сохранить ее в массив address
Слайд 21

printf() Записывает в stdout аргументы из списка arg-list под управлением строки,

printf()

Записывает в stdout аргументы из списка arg-list под управлением строки, на

которую указывает аргумент format.
Формат:
printf(const char *format, arg-list)
Слайд 22

printf()

printf()

Слайд 23

Пример printf() printf ("Hello %с %d %s", ‘a’, 17, “world!"); Результат “Hello a 17 world”

Пример printf()

printf ("Hello %с %d %s", ‘a’, 17, “world!");
Результат “Hello

a 17 world”
Слайд 24

// Пример // Ввод-вывод строк с использованием функций printf, scanf #include

// Пример
// Ввод-вывод строк с использованием функций printf, scanf
#include
#include
#include


int main()
{
setlocale(LC_ALL, "rus");
char str[80];
printf ("Введите строку символов str:");
scanf ("%s", str);
printf ("Вы ввели строку: %s", str);
while (!kbhit());
return 0;
}
Слайд 25

Примечание Если необходимо, чтобы функция считала за знак разделителя только конец

Примечание

Если необходимо, чтобы функция считала за знак разделителя только конец строки,

то рекомендуется использовать следующий формат:
scanf ("%[^\n]s", str);
Слайд 26

// Пример // Ввод-вывод строк с использованием функций printf, scanf #include

// Пример
// Ввод-вывод строк с использованием функций printf, scanf
#include
#include
#include


int main()
{
setlocale(LC_ALL, "rus");
char str[80];
printf ("Введите строку символов str:");
scanf ("%[^\n]s", str);
printf ("Вы ввели строку: %s", str);
while (!kbhit());
return 0;
}
Слайд 27

gets() Cчитывает символы из стандартного потока ввода до символа новой строки

gets()

Cчитывает символы из стандартного потока ввода до символа новой строки \n

или до тех пор, пока не будет достигнут конец файла EOF, после чего сохраняет считанные символы в строку типа char.
Символ новой строки \n не копируется в строку.
Нулевой символ \0 автоматически добавляется после последнего копируемого символа в string, чтобы сигнализировать о конце строки.
Формат:
gets (string);
Слайд 28

puts() Выводит строку типа char*, на которую указывает параметр string в

puts()

Выводит строку типа char*, на которую указывает параметр string в стандартный

поток вывод и добавляет символ новой строки ‘\n’.
Заключительный, нулевой символ не копируется в стандартный поток вывода.
Формат:
puts(string);
Слайд 29

// Программа // Ввод-вывод строк с использованием функций gets() и puts()

// Программа
// Ввод-вывод строк с использованием функций gets() и puts()
#include
#include


#include
int main()
{
setlocale(LC_ALL, "rus");
char str[80];
printf ("Введите строку символов str:");
gets (str);
printf ("Вы ввели строку:");
puts (str);
while (!kbhit());
return 0;
}
Слайд 30

Операции со строками

Операции со строками

Слайд 31

/* Программа - Использование библиотечных функций обработки строк */ #include #include

/* Программа - Использование библиотечных функций обработки строк */
#include
#include
#include


#include
#include
#include
using namespace std;
int main ( )
{
setlocale(LC_ALL, "rus");
int n;
char str[80], s1[80], s2[80]; char first[20], second[10];
// Функция считывания символов с клавиатуры - GETS()
printf (" 1 - функция GETS ( )\n");
cout<<"Введите строку символов: ";
gets(str);
cout<<"Вы ввели следующие символы: ";
printf ("%s", str);
printf ("\n\n");
Слайд 32

// Функция копирования строки - STRCPY() // и функция объединения (сцепления)

// Функция копирования строки - STRCPY()
// и функция объединения (сцепления) 2-х

строк - STRCAT()
printf ("2 - функции STRCPY () и STRCAT ()\n");
strcpy (first,"Hello ");
strcpy (second,"Mickle !");
strcat (first,second);
printf ("%s",first);
printf ("\n\n");
Слайд 33

// Функция определения длины строки - STRLEN () printf ("3 -

// Функция определения длины строки - STRLEN ()
printf ("3 -

функция STRLEN()\n");
printf ("Введите строку символов: ");
gets (str);
printf ("Результат: во введенной строке содержится %d",strlen(str));
printf (" символов.");
printf ("\n\n");
Слайд 34

// Функция сравнения - STRCMP () cout cout gets(s1); printf ("Введите

// Функция сравнения - STRCMP ()
cout<<"4 - функция STRCMP()\n";
cout<<"Введите

строку символов s1: ";
gets(s1);
printf ("Введите строку символов s2: ");
gets (s2);
printf ("Длина s1 = %d\n",strlen(s1));
printf ("Длина s2 = %d\n",strlen(s2));
if (!strcmp(s1,s2)) printf ("Эти строки равны.\n");
strcat (s1,s2);
printf ("%s\n",s1);
printf ("\n\n");
Слайд 35

printf ("5 - Печать введенной с клавиатуры строки символов\n"); printf ("

printf ("5 - Печать введенной с клавиатуры строки символов\n");
printf (" в

обратном порядке.\n");
printf ("Введите строку символов: ");
gets (str);
printf ("Вы ввели следующие символы: ");
printf ("%s",str);
cout<cout<<"Результат: ";
for (n=strlen(str)-1; n>=0; n--)
printf ("%c",str[n]);
while (!kbhit ());
}
Слайд 36

Примеры программ

Примеры программ

Слайд 37

Пример 10 Задан массив слов. Определить количество символов в словах. Обозначения:

Пример 10

Задан массив слов. Определить количество символов в словах.
Обозначения:
a[n] – массив

слов;
n – количество слов;
i – текущий номер слова;
b[i] – массив, элементы которого - количество символов в словах.
Слайд 38

Отладочный пример n=3; a[n] = {abc; qq; xxxxx}; Результат: b[n] = {3; 2; 5}

Отладочный пример

n=3; a[n] = {abc; qq; xxxxx};
Результат:
b[n] = {3; 2; 5}

Слайд 39

#include #include #include #include using namespace std; int i,n,b[10]; char a[10][10];

#include
#include
#include
#include
using namespace std;
int i,n,b[10];
char a[10][10];
int main()
{
setlocale(LC_ALL, "rus");
cout << « Введите

количество слов n=";
cin >> n;
cout << "\n Введите слова, после каждого слова - Enter:\n";
for (i=0; i cin >> a[i];
for (i=0; i b[i]=strlen(a[i]);
for (i=0; i cout << "\nВ слове " << a[i] << " - " << b[i] << " символов";
cout << "\n\n";
while (!kbhit());
return 0;
}
Слайд 40

Пример 11 Задан массив слов. Определить количество слов, в которых встречается

Пример 11

Задан массив слов. Определить количество слов, в которых встречается буква,

вводимая с клавиатуры.
Обозначения:
n - количество слов;
a[n] - массив слов;
c - буква, вводимая с клавиатуры;
m - количество слов с буквой “с”;
i - текущий номер слова;
l - длина i-го слова;
j - текущий номер буквы в слове.
Слайд 41

Отладочный пример n=5; a[n]= {asd; xqxx; cfx; klm; xxxxx}; c=x. Результат: m=3

Отладочный пример

n=5;
a[n]= {asd; xqxx; cfx; klm; xxxxx};
c=x.
Результат:
m=3

Слайд 42

Слайд 43

#include #include #include using namespace std; int i,j,l,m,n; char a[30][10],c; int

#include
#include
#include
using namespace std;
int i,j,l,m,n;
char a[30][10],c;
int main()
{
setlocale(LC_ALL, "rus");
cout <<

"Введите количество слов n=";
cin >> n;
cout << "\nВведите список слов; после каждого слова Enter:\n";
for (i=0; i cin >> a[i];
cout << "\nВведите символ c=";
cin >> c;
m=0;
for (i=0; i {
l=strlen(a[i]);
for (j=0; j<=l; j++)
if (a[i][j]==c)
{
m++;
break; //Прервать цикл по j
}
}
cout << "\nРезультат:";
cout << "\nКол-во слов в которых есть буква '" << c << "'=" << m;
cout << "\n\n";
return 0;
}
Слайд 44

Пример 12 Задан текст, слова разделены запятой, за последним словом точка.

Пример 12

Задан текст, слова разделены запятой, за последним словом точка. Определить

количество слов, в которых встречается буква, вводимая с клавиатуры.
Слайд 45

Обозначения s[n] – строка символов (заданный текст); с – буква, вводимая

Обозначения

s[n] – строка символов (заданный текст);
с – буква, вводимая с клавиатуры;
m

– количество слов, в которых встречается буква, вводимая с клавиатуры ;
i - текущий номер символа в строке s.
Слайд 46

Отладочный пример s[n]= {asd,xqxx,cfx,klm,xxxxx.} c={x} Результат: m=3

Отладочный пример

s[n]= {asd,xqxx,cfx,klm,xxxxx.}
c={x}
Результат:
m=3

Слайд 47

Слайд 48

#include #include #include #include using namespace std; char s[255]; char c;

#include
#include
#include
#include
using namespace std;
char s[255];
char c;
int i,m;
int main()
{

setlocale(LC_ALL, "rus");
cout << "\nВведите текст :";
cin >> s;
cout << "\n Введите символ c=";
cin >> c;
m=0;
i=-1;
do
{
i++;
if (s[i]==c)
{
m++;
do
{
i++;
}
while ((s[i]!=',')&&(s[i]!='.'));
}
}
while(s[i]!='.');
cout << "\n Результат:";
cout << "\n Количество слов = " << m << "\n\n";
while (!kbhit());
return 0;
}
Слайд 49

Программа 13 Задан текст, между словами – пробел, за последним словом

Программа 13

Задан текст, между словами – пробел, за последним словом точка.

Напечатать слова текста в обратном порядке.
Слайд 50

Обозначения a[n] – строка символов (заданный текст); h – количество символов

Обозначения

a[n] – строка символов (заданный текст);
h – количество символов в

заданном тексте;
b[m][c] – массив слов, который формируется из заданного текста;
m – количество слов в заданном тексте;
c – текущий номер символа в b[i] слове;
i – текущий номер слова в массиве b[m];
Слайд 51

Отладочный пример s[n]= {asd xqxx cfx.} Результат: b[m]={cfx; xqxx; asd}

Отладочный пример

s[n]= {asd xqxx cfx.}
Результат:
b[m]={cfx; xqxx; asd}

Слайд 52

Слайд 53

#include #include #include #include #include using namespace std; char a[255],b[30][255]; int


#include
#include
#include
#include
#include
using namespace std;
char a[255],b[30][255];
int i,l,k,m,h,c;
int main()
{
setlocale(LC_ALL,

"rus");
cout << "Введите текст, между словами пробел – в конце текста точка\n";
gets (a);
h=strlen(a);
m=0;
for (i=0; i<=h; i++)
if ((a[i]=='.')||(a[i]==' '))
{
m++;
c=0;
}
else
{
b[m][c]=a[i];
c++;
}
cout << "\nРезультат: ";
for (i=(m-1); i>=0; i--)
cout << b[i] << " ";
cout << "\n\n";
while (!kbhit());
return 0;
}
Слайд 54

Программа 14 Задан текст. Между словами – пробел, в конце –

Программа 14

Задан текст. Между словами – пробел, в конце – точка.

Выполнить сортировку слов в алфавитном порядке.
Слайд 55

Обозначения text [i] - заданный текст (одномерный символьный массив); word [k][j]

Обозначения

text [i] - заданный текст (одномерный символьный массив);
word [k][j] –

формируемый из текста text [i] массив слов;
r – ячейка обмена;
i – параметр цикла;
j - параметр цикла;
k – количество слов в массиве word [k][j]
Слайд 56

Отладочный пример text[i] – {klm, z, abc, aaaaa.} Результат: word[k] - {aaaaa, abc, klm, z}

Отладочный пример

text[i] – {klm, z, abc, aaaaa.}
Результат:
word[k] - {aaaaa, abc, klm,

z}
Слайд 57

Пояснения к алгоритму сортировки Преобразовать исходный текст text[i] в массив слов

Пояснения к алгоритму сортировки

Преобразовать исходный текст text[i] в массив слов word[k]
Выполнить

сортировку слов в массиве word[k] по алфавиту:
for (i=0; i for (j=i+1; j<=k; j++)
if (strcmp(&word[i][0],&word[j][0]) > 0)
{
strcpy(&r[0],&word[j][0]);
strcpy(&word[j][0],&word[i][0]);
strcpy(&word[i][0],&r[0]);
}
Слайд 58

#include #include #include #include using namespace std; char word[100][15],text[255],r[15]; int i,j,k;

#include
#include
#include
#include
using namespace std;
char word[100][15],text[255],r[15];
int i,j,k;
int main()
{
setlocale(LC_ALL, "rus");
printf("Введите

текст :");
scanf("%[^\n]s", &text);
printf("\n\n");
i=0;
j=0;
k=0;
while (text[i]!='.')
{
if (text[i] == ' ')
{
k++;
j=0;
}
else
{
word[k][j]=text[i];
j++;
}
i++;
}
for (i=0; i for (j=i+1; j<=k; j++)
{
if (strcmp(&word[i][0],&word[j][0]) > 0)
{
strcpy(&r[0],&word[j][0]);
strcpy(&word[j][0],&word[i][0]);
strcpy(&word[i][0],&r[0]);
};
};
for (i=0; i<=k; i++) printf("%s ",word[i]);
printf("\n\n");
while(!kbhit());
return(0);
}
Слайд 59

Cтроки класса string

Cтроки класса string

Слайд 60

Cтроки класса string В современном стандарте C++ определен класс с функциями

Cтроки класса string

В современном стандарте C++ определен класс с функциями и

свойствами (переменными) для организации работы со строками
#include
Для работы со строками также нужно подключить стандартный namespace:
using namespace std;
Слайд 61

Основные возможности класса string: Инициализация массивом символов (строкой встроенного типа) или

Основные возможности класса string:

Инициализация массивом символов (строкой встроенного типа) или

другим объектом типа string. Встроенный тип не обладает второй возможностью;
Копирование одной строки в другую. Встроенный тип - функция strcpy();
Доступ к отдельным символам строки для чтения и записи. Встроенный тип – используется операция взятия индекса или косвенная адресация с помощью указателя;
Сравнение двух строк на равенство. Встроенный тип - функции семейства strcmp();
Слайд 62

Основные возможности класса string: Конкатенация (сцепление) двух строк, дающая результат либо

Основные возможности класса string:

Конкатенация (сцепление) двух строк, дающая результат либо

как третью строку, либо вместо одной из исходных. Для встроенного типа применяется функция strcat(), чтобы получить результат в новой строке, необходимо последовательно задействовать функции strcpy() и strcat(), а также выделять память;
Встроенные средства определения длины строки (функции-члены класса size() и length()). Узнать длину строки встроенного типа можно только вычислением с помощью функции strlen();
Возможность узнать, пуста ли строка.
Слайд 63

Инициализация строк Задание пустой строки: string st2; Задание инициализированной строки: string st1( “Winter is coming\n” );

Инициализация строк

Задание пустой строки:
string st2;
Задание инициализированной строки:
string st1( “Winter is coming\n”

);
Слайд 64

Определение длины строки Применяется к конкретной строке, для которой определяется размер: st.size(); cout

Определение длины строки

Применяется к конкретной строке, для которой определяется размер:
st.size();
cout <<“Длина

строки ”<
Слайд 65

Проверка строки на пустоту Исходная строка: string st2; // пустая строка

Проверка строки на пустоту

Исходная строка:
string st2; // пустая строка
Определение длины

строки, если 0, значит строка пустая:
if (!st2.size()) cout<<“Строка пустая”;
Использование метода empty(): возвращает true, если строка пустая, и false в противном случае.
if (st2.empty()) cout<<“Строка пустая”;
Слайд 66

Определение совпадения строк string st1 (“Hello!”); string st2 (“Hello!”); … if (st1==st2) cout

Определение совпадения строк

string st1 (“Hello!”);
string st2 (“Hello!”);

if (st1==st2) cout<<“Строки совпадают”;

Слайд 67

Копирование строк Копирование строк осуществляется операцией присваивания: string st1 (“Hello!”); string st2; st2=st1; string st3=st2;

Копирование строк

Копирование строк осуществляется операцией присваивания:
string st1 (“Hello!”);
string st2;
st2=st1;
string st3=st2;

Слайд 68

Конкатенация строк Для конкатенации (объединения) строк используется оператор сложения + или

Конкатенация строк

Для конкатенации (объединения) строк используется оператор сложения + или оператор

сложения с присваиванием +=
string st1(“Winter is ”);
string st2(“coming\n”);
string st3 = st1+st2; //получаем новую строку из двух предыдущих
st1+=st2; //добавляем содержимое второй строки в конец первой
Слайд 69

Конкатенация строк Допускается объединение между собой не только объектов класса string,

Конкатенация строк

Допускается объединение между собой не только объектов класса string, но

и строк встроенного типа:
char ch=“, ”;
string st1(“Hello”);
string st2(“Bro!”);
string st3 = st1+ch+st2+”\n”;
Результат: st3 = “Hello, Bro!\n”;
Слайд 70

Преобразование Объекты встроенного типа возможно преобразовывать в объекты класса string: string

Преобразование

Объекты встроенного типа возможно преобразовывать в объекты класса string:
string s1;
char ch

= “Hear me roar\n”;
s1=ch;
Слайд 71

Преобразование Функция c_str() - возвращает указатель на символьный массив, который содержит

Преобразование

Функция c_str() - возвращает указатель на символьный массив, который содержит в

себе строку типа string в том виде, в котором она размещалась бы во встроенном строковом типе.
string str1;
const char *str2 = str1.c_str();
Слайд 72

Индексы К отдельным символам объекта string можно обращаться при помощи индексов:

Индексы

К отдельным символам объекта string можно обращаться при помощи индексов:
string str1(“Valar

Morghulis”);
cout<Метод at(). Обеспечивает проверку границ и создает исключение, если вы пытаетесь получить несуществующий элемент.
string str1(“Valar Morghulis”);
cout<
Слайд 73

Пример Заменить в строке все пробелы на символы подчеркивания. string str

Пример

Заменить в строке все пробелы на символы подчеркивания.
string str (“Valar Morghulis

and Valar Dohaeris”);
int size = str.size();
for (int i=0; i if (str[i]==‘ ’) str[i]=‘_’;
Слайд 74

Пример Для решения задачи можно воспользоваться функцией replace(); #include … replace(str.begin(), str.end(), ‘ ’, ‘_’);

Пример

Для решения задачи можно воспользоваться функцией replace();
#include

replace(str.begin(), str.end(), ‘ ’,

‘_’);
Слайд 75

Указатели

Указатели

Слайд 76

Указатели Указатель — это переменная, значением которой является адрес памяти, по

Указатели

Указатель — это переменная, значением которой является адрес памяти, по которому

хранится объект определенного типа (другая переменная).
Пример:
если ch — это переменная типа char, а p — указатель на ch, значит в p находится адрес, по которому в памяти компьютера хранится значение переменной ch.
Слайд 77

Объявление тип * Пример: int *p; //по адресу, записанному в переменной

Объявление

тип *<имя переменной>
Пример:
int *p; //по адресу, записанному в переменной p,
//будет хранится переменная

типа int
//т.е. p указывает на тип данных int
Слайд 78

Примеры объявления char *p; int *k, j,*l; float *pf, f;

Примеры объявления

char *p;
int *k, j,*l;
float *pf, f;

Слайд 79

Операции над указателями & - “взять адрес” * - “значение, расположенное по данному адресу”

Операции над указателями

& - “взять адрес”
* - “значение, расположенное по данному

адресу”
Слайд 80

Операция & Возвращает адрес своего операнда: float a; //объявлена вещественная переменная

Операция &

Возвращает адрес своего операнда:
float a; //объявлена вещественная переменная a
float *adr_a;

//объявлен указатель на тип float
adr_a = &a; //оператор записывает в переменную adr_a
//адрес переменной a
Слайд 81

Операция * - разадресация Возвращает значение переменной, хранящееся в по заданному

Операция * - разадресация

Возвращает значение переменной, хранящееся в по заданному адресу,

то есть выполняет действие, обратное операции &.
float a; //объявлена вещественная переменная a
float *adr_a; //объявлен указатель на тип float
a = *adr_a; //оператор записывает в переменную a
//вещественное значение,
//хранящиеся по адресу adr_a
Слайд 82

Примеры Пусть переменная b размещается по адресу 2000. b_addr = &b

Примеры

Пусть переменная b размещается по адресу 2000.
b_addr = &b
Этот оператор

присваивания помещает в переменную
b_addr адрес памяти переменной b, т.е. b_addr будет иметь значение 2000.
Слайд 83

Примеры Если b_addr содержит адрес ячейки памяти переменной b, тогда y

Примеры

Если b_addr содержит адрес ячейки памяти переменной b, тогда
y =

*b_addr;
поместит значение переменной b в переменную y
Слайд 84

Примеры программ

Примеры программ

Слайд 85

//Программа 1 #include using namespace std; int main() { float x=7.8,

//Программа 1
#include
using namespace std;
int main()
{
float x=7.8, y;
float

*k; //объявляется указатель на переменную типа float
k=&x; //в переменную k помещается адрес переменной x
y=*k; //значение переменной x помещается в переменную y
printf("%f",y);
return 0;
}
Слайд 86

//Программа 2 #include #include #include using namespace std; int main() {

//Программа 2
#include
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
float

x=10.0, y;
float *pf;
pf=&x; //переменной pf присваивается адрес переменной x
y=*pf; //переменной y присваивается значение переменной x
printf ("Результаты:\n");
printf ("x=%f y=%f\n",x,y);
while (!kbhit());
return 0;
}