АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Void main()

Читайте также:
  1. void main()
  2. Аргументы функции main(): argv и argc

Void main()

{int a=10;

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

int *ptra=&a; // указатель проиниц. адресом переменной типа а

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

int *ptrb=ptra; // указатель проиниц. значением указателя ptra

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

int*ptrc=(int*)0xB8000000;// указатель проиниц. явным адресом

printf("ptrc=%p &ptrc=%p",ptrc,&ptrc);

}

Результат: a=___ &a=_________________

ptra=___________ &ptra=___________

ptrb=___________ &ptrb=___________

ptrc=___________ &ptrc=___________


Расположение в памяти переменных представлено на рис.

  Адрес Содержимое
начало сегмента 8ADA 0000  
  ...  
  8ADA FFF2  
  8ADA FFF3  
  8ADA FFF4  
  8ADA FFF5  
  8ADA FFF6  
  8ADA FFF7  
  8ADA FFF8  
  8ADA FFF9  
a 8ADA FFFA  
  8ADA FFFB  
  8ADA FFFC  
  8ADA 0FFD  
адресa 8ADA FFFE  
  8ADA FFFF  

Пример 2. Использование операции разыменования указателей

#include <iostream.h>

Void main()

{float f=1.3;

float *pf=&f;

cout<<"pf="<<pf<<" *pf="<<*pf<<endl;

*pf=2.7;

cout<<" f="<<f<<endl;

int a=5;

int *pa=&a;

cout<<"pa="<<pa<<”*pa=”<<*pa<<endl;

}

Результат: pf=0xF9B0 0FFC *pf=_____

f=_____

pa=0xF9B0 0FFA *pa=______


Пример 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=&pi;

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>


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)