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

Вариант программы на С:

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

#include <stdio.h>

#include <conio.h>

int _main(void)

{

int a,c,b;

int *ca, *cb;

int *sa, *sb, *sc;

printf("a = ", &a);

printf("b = ", &b);

c=a+b;

sb=&b;//инициализация указателей через взятие адреса

sa=&a;

sc =&c;

//присваивание указателю значения выражения

*sc = c+a-b;

ca=sa;//присваивание указателю значения другого указателя

cb=sb;

*sa=12;//присваивание указателю значения константы

printf("\n*ca = %d",*ca);

printf("\n*cb = %d",*cb);

printf("\n*sb = %d",*sb);

printf("\n*sc = %d",*sc);

printf("\nca = %p",ca);

printf("\ncb = %p",cb);

printf("\nsc = %p",sc);

printf("\na = %d",a);

printf("\nb = %d",b);

printf("\nc = %d",c);

printf("\n&a = %p",&a);

printf("\n&b = %p",&b);

printf("\n&c = %p",&c);

printf("\n*&a = %d",*&a);

printf("\n*cb-*ca = %d", *cb-*ca);

printf("\n*cb+*ca = %d", *cb+*ca);

*cb+=2; //сложение с константой

printf("\ncb = %p", cb);

cb++; //инкремент

printf("\ncb = %p", cb);

ca--; //декремент

printf("\ncа = %p", ca);

printf("\ncb-ca = %d", cb-ca);

_getch();

return 0;

}

Вариант программы на С++:

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

#include "stdafx.h"

#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[]){

int a,c,b;

int *ca, *cb;

int *sa, *sb, *sc;

cout << "a = "; cin >> a;

cout << "b = "; cin >> b;

c=a+b;

sb=&b;//инициализация указателей через взятие адреса

sa=&a;

sc =&c;

//присваивание указателю значения выражения

*sc = c+a-b;

ca=sa;//присваивание указателю значения другого указателя

cb=sb;

*sa=12;//присваивание указателю значения константы

cout << "\n*ca = " << *ca;

cout << "\n*sa = " << *sa;

cout << "\n*cb = " << *cb;

cout << "\n*sb = " << *sb;

cout << "\n*sc = " << *sc;

cout << "\nca = " << ca;

cout << "\ncb = " << cb;

cout << "\nsc = " << sc;

cout << "\na = " << a;

cout << "\nb = " << b;

cout << "\nc = " << c;

cout << "\n&a = " << &a;

cout << "\n&b = " << &b;

cout << "\n&c = " << &c;

cout << "\n*&a = " << *&a;

cout << "\n*cb-*ca = " << *cb-*ca;

cout << "\n*cb+*ca = " << *cb+*ca;

*cb+=2; //сложение с константой

cout << "\ncb = " << cb;

cb++; //инкремент

cout << "\ncb = " << cb;

ca--; //декремент

cout << "\ncа = " << ca;

cout << "\ncb-ca = " << cb-ca;

system("pause");

return 0;

}

! Указатели одного и того же типа можно сравнивать с помощью стандартных операций сравнения. При этом сравниваются значения указателей, а не значения величин, на которые данные указатели ссылаются.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: