Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ReferencesAndPointers

.cpp
Скачиваний:
0
Добавлен:
19.06.2023
Размер:
2.26 Кб
Скачать
#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);
}
Соседние файлы в предмете Программирование