1 / 11

Vakio-osoitin ja osoitin vakioon

Vakio-osoitin ja osoitin vakioon. Tavallinen osoitin voi vaihtaa osoitettavaa keskusmuistialuetta. Tämä voidaan tehdä sijoittamalla osoittimeen uuden keskusmuistiosoitteen arvo. Tavallisen osoittimen kautta voidaan myös viitata epäsuorasti keskusmuistialueen sisältöön ja muuttaa sitä.

jadzia
Download Presentation

Vakio-osoitin ja osoitin vakioon

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vakio-osoitin ja osoitin vakioon • Tavallinen osoitin voi vaihtaa osoitettavaa keskusmuistialuetta. • Tämä voidaan tehdä sijoittamalla osoittimeen uuden keskusmuistiosoitteen arvo. • Tavallisen osoittimen kautta voidaan myös viitata epäsuorasti keskusmuistialueen sisältöön ja muuttaa sitä. • Varattua sanaa const käytetään, kun halutaan suojata osoitin tai osoitettu keskusmuistialue muutoksilta. tMyn

  2. Vakio-osoittimen määrittely: tyyppi* const osoitin=&muuttuja; Koska osoitin on vakio, ei sen sisältöä voi muuttaa. • Osoitetun alueen suojaaminen muutoksilta: const tyyppi* osoitin=&muuttuja; Koska osoitettu tieto on vakio, ei sen sisältöä voi muuttaa. • Voidaan siis erottaa kolme erilaista vaikutusta const-määreen ja osoittimen käytön kanssa: tMyn

  3. 1. Osoitetun alueen suojaaminen muutoksilta: const char* totuus=”Tätä juttua et voi muuttaa!”; const char* taasTotuus=”Samat sanat!”; totuus=taasTotuus; Sitä vastoin voit antaa osoitinmuuttujalle totuus jonkin uuden osoitteen! tMyn

  4. #include "stdafx.h" #include <iostream> using namespace System; using namespace std; int main(array<System::String ^> ^args) { const int kokLuku1=20; const int* pInt=&kokLuku1; cout<<"Muuttuja kokLuku1 on vakio,"<<endl <<"eik\204 sen arvoa siis voi muuttaa.. "<<endl <<"Sen arvo on osoittimella katsottuna: " <<*pInt<<"."<<endl; const int kokLuku2=40; Osoittimen tulee myös olla const-tyyppinen! tMyn

  5. const int kokLuku2=40; pInt=&kokLuku2; cout<<"Mutta onhan aina mahdollista antaa "<<endl <<"osoitinmuuttujalle pInt jokin uusi osoite!"<<endl <<"Muuttuja kokLuku2 on vakio"<<endl <<"eik\204 sen arvoa siis voi muuttaa.. "<<endl <<"Sen arvo on osoittimella katsottuna: " <<*pInt<<"."<<endl; return 0; } tMyn

  6. 2. Vakiosisältöisen osoittimen määrittely: int luku=44; int* const muuttumaton=&luku; Osoitinmuuttuja muuttumaton voi osoittaa vain ja ainoastaan muuttujaan luku. Muuttujan luku arvoa voidaan sitä vastoin muuttaa. tMyn

  7. #include "stdafx.h" #include <iostream> using namespace System; using namespace std; int main(array<System::String ^> ^args) { int kokLuku1=20; int* const pInt=&kokLuku1; cout<<"Osoitinmuuttuja pInt on vakiosis\204lt\224inen” <<endl <<"joten se voi osoittaa vain muuttujaan kokLuku1"<<endl <<"Sit\204 vastoin muuttuja kokLuku1 ei ole const-tyyppinen!:” <<endl; Nyt muuttuja ei saa olla const-tyyppinen! tMyn

  8. kokLuku1=30; cout<<"Nyt muuttujan kokLuku1 sis\204lt\224 on: " <<*pInt<<"."<<endl; return 0; } tMyn

  9. 3. Vakiosisältöinen osoitin muutossuojattuunmuistialueeseen: const int numero=43; const int* const totuus=&numero; Nyt ei voida muuttaa osoittimen arvoa eikä sen muistialueen arvoa johon osoitetaan! tMyn

  10. #include "stdafx.h" #include <iostream> using namespace System; using namespace std; int main(array<System::String ^> ^args) { const int kokLuku1=20; const int* const pInt=&kokLuku1; cout<<"Osoitinmuuttuja pInt on vakiosis\204lt\224inen"<<endl <<"ja se osoittaa vakioon."<<endl <<"Sit\204 osoitetta mihin pInt osoittaa"<<endl <<"ei voida muuttaa."<<endl tMyn

  11. <<"Sen paikan sis\204lt\224\204 mihin pInt osoittaa"<<endl <<"ei voida my\224sk\204\204n muuttaa."<<endl <<"Muuttujan arvo on "<<*pInt<<"."<<endl; return 0; } tMyn

More Related