Добавил:
jetu
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ReferencesAndPointers
.cpp#include <iostream>
/* Сложение.
Принимает указатель и число — первое и второе слагаемые.
Возвращает сумму чисел.*/
int addition(int* addend1, int addend2) {
return *addend1 + addend2;
}
/*Вычитание.
Принимает число и указатель — уменьшаемое и вычитаемое.
Возвращает разность чисел.*/
int subtraction(int& subtrahend, int* minuend) {
return subtrahend - *minuend;
}
/* Умножение.
Принимает указатель и число — множимое и множитель.
По множимому возвращает произведение чисел.*/
void multiplication(int multiplier__product[1], int multiplicand) {
*multiplier__product *= multiplicand;
}
/*Деление с остатком.
Принимает два числа — делимое и делитель.
По делимому возвращает частное, по делителю — остаток.*/
void euclidean_division(int& dividend__quotient, int* divisor__remainder) {
int a = dividend__quotient;
dividend__quotient /= *divisor__remainder;
*divisor__remainder = a % *divisor__remainder;
}
int main()
{
int a = 70;
int b = 6;
printf("%d + %d = %d\n", a, b, addition(&a, b));
int array_with_b[1] = { b };
printf("%d - %d = %d\n", a, b, subtraction(a, array_with_b));
int c = a;
int* pc = &c;
multiplication(pc, b);
printf("%d * %d = %d\n", a, b, c);
c = a;
euclidean_division(c, array_with_b);
printf("%d Div %d = %d\n", a, b, c);
printf("%d Mod %d = %d\n\n", a, b, array_with_b[0]);
// Эксперимент: массив указателей
int k = 2;
int* arr[4];
arr[0] = &k;
for (int i = 1; i < 4; i++)
arr[i] = arr[i - 1];
for (int i = 0; i < 4; i++)
printf("%X ", int(arr[i]));
for (int i = 0; i < 4; i++)
*arr[i] *= k;
printf("\nk = %d\n\n", k);
// Эксперимент: указатель указателя
int x = 17;
int* px = &x;
int** ppx = &px;
**ppx = 12;
printf("ppx = %X, *ppx = %X, **ppx = %d, x = %d\n", int(ppx), int(*ppx), **ppx, x);
}
Соседние файлы в предмете Программирование