Вариант программы на С:
//Операции над указателями
#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;
}
! | Указатели одного и того же типа можно сравнивать с помощью стандартных операций сравнения. При этом сравниваются значения указателей, а не значения величин, на которые данные указатели ссылаются. |