Читайте также:
|
|
puts(s1); // Сегодня - понедельник
Пример 3. Использование вычитания указателей типа int
#include <stdio.h>
void main()
{int a=1,b=7,c;
int*pa=&a, *pb=&b, *pc=&c;
printf("pa=%p pb=%p pc=%p\n",pa,pb,pc);
printf("pa-pb=%d\n",pa-pb);
printf("pa-pc=%d\n",pa-pc);
}
Результат: pa=8B04:FFFE pb=8B04:FFFC bc=8B04:FFFA
pa-pb=__ pa-pc=__
Пример 4. Использование вычитания указателей типа long
#include <stdio.h>
void main()
{long al=2L,bl=7L,cl;
long *pal=&al,*pbl=&bl,*pcl=&cl;
printf("pa1=%p pb1=%p pc1=%p\n",pa1,pb1,pc1);
printf("pal-pbl=%d",pal-pbl);
printf("pal-pcl=%d\n",pal-pcl);
}
Результат: pal=8B11:FFE8 pbl=8B11:FFE4 pcl=8B11:FFE0
pal-pbl=__ pal-pcl=__
Пример 5. Использование сложения и вычитания целых чисел
#include <stdio.h>
void main()
{int a=10,b=20,c=30;
int *pa=&a,*pb=&b,*pc=&c;
printf("pa=%p pb=%p pc=%p\n",pa,pb,pc);
printf("%p %d %d\n",pa-1,*(pa-1),*pa–1);
printf("%p %d %d\n",pс+2,*(pс+2),*pс+2);
pb=pb+1;
printf("%p %d %d\n",pb,*pb,*(pb-2));
}
Результат: pa=8B04:FFFE pb=8B04:FFFC pc=8B04:FFFA
_______ ___ __
_______ ___ __
_______ ___ __
Пример 6. Использование операции многократного разыменования указателя
#include <iostream.h>
void main()
{int i=5;
int *pi=&i;
int **ppi=π
int ***pppi=&ppi;
cout<<" &i="<<&i<<endl; // &i=0x8f86 010с
cout<<" &pi="<<&pi<<endl; // &pi=0x8f86 0108
cout<<" &ppi="<<&ppi<<endl; // &ppi=0x8f86 0104
cout<<" &pppi="<<&pppi<<endl;// &pppi=0x8f86 0100
cout<<" pppi="<<pppi<<endl; // pppi=_____________
cout<<" *pppi="<<pppi<<endl; // *pppi=____________
cout<<" **pppi="<<pppi<<endl; // **pppi=____________
cout<<"***pppi="<<pppi<<endl; // ***pppi=___
}
Адрес | Содержимое | |
адрес указателяpppi | 8F86:0100 | |
адрес указателяppi | 8F86:0104 | |
адрес указателяpi | 8F86:0108 | |
адрес переменнойi | 8F86:010c |
Пример 7. Использование операций разыменования, инкремента, декремента и взятия адреса
#include <stdio.h>
void main()
{int a=1,b=2,c=5;
int *ptr=&b;
printf("&c=%p\n",&c); // &c=8ff0:0050
printf("&b=%p\n",&b); // &b=8ff0:0052 //ptr=&b
printf("&a=%p\n",&a); // &a=8ff0:0054
printf("*&b=%d\n",*&b); // *&b=__
printf("*&++b=%d\n",*&++b); // *&++b=__
printf("*ptr=%d\n",*ptr); // *ptr=__
printf("*ptr++=%d\n",*ptr++); // *ptr++=__
printf("*ptr=%d\n”,*ptr); // *ptr=__ (*)
printf("++*ptr=%d\n”,++*ptr); // ++*ptr=__
int m=10,n=20; // &n=8ff0:0060 &m=8ff0:0062
int *pm=&m;
printf("++*--pm=%d\n”,++*--pm); // ++*--pm=__
}
Указатели и константы
Указатель – константа – указатель, значение (хранящийся адрес) которого нельзя изменить. Но содержимое по адресу, который содержит такой указатель, изменять можно.
Пример 8.
int a=5;
int *const Сptr=&a; // неизменяемый указатель
int а1=*Сptr; // _________________________________________
*Сptr=10; // _________________________________________
Сptr=&a1; // _________________________________________
Указатель на константу – это такой указатель, при разыменовании которого нельзя изменить значение переменной, адрес которой хранится в указателе. Но содержимое указателя (хранящийся адрес) изменить можно, но при этом нельзя будет изменить значение новой переменной.
Пример 9.
const int b=2;
int const *ptrС=&b; // указатель на неизменяемое число (константу)
int b1=*ptrС; // _________________________________________
*ptrС=5; // _________________________________________
ptrС=&b1; // _________________________________________
Указатель-константа на константу – это указатель, в котором хранящийся адрес и содержимое по этому адресу изменить нельзя. В этом случае можно только посмотреть содержимое переменной, используя разыменование указателя.
Пример 10.
const int с=20;
int const*const СptrС=&с; // указатель-константа на константу
int с1=*СptrС; // _________________________________________
*СptrС=5; // _________________________________________
СptrС=&c1; // _________________________________________
Имя массива– этоуказатель-константа,значением которого служит адрес нулевого элемента массива.
Дата добавления: 2014-12-18; просмотров: 37 | Поможем написать вашу работу | Нарушение авторских прав |
<== предыдущая лекция | | | следующая лекция ==> |
Void main() | | | Продолжение 3 вопроса: Показатели продукции статистики промышленности |