Mikä on osoitin C: ssä?
Osoitin C: ssä on muuttuja, joka tallentaa toisen muuttujan osoitteen. Osoitinta voidaan käyttää myös viittaamaan toiseen osoitintoimintoon. Osoitinta voidaan lisätä / vähentää, ts. Osoittaa seuraavaan / edelliseen muistipaikkaan. Osoittimen tarkoituksena on säästää muistia ja saavuttaa nopeampi suoritusaika.
Osoittimien käyttäminen C: ssä
Jos ilmoitamme muuttujan v tyypiksi int, v tallentaa arvon.
v on nyt nolla.
Jokaisella muuttujalla on kuitenkin arvon lisäksi myös osoite (tai yksinkertaisesti sanottuna, missä se sijaitsee muistissa). Osoite voidaan noutaa asettamalla muuttujan nimen eteen ampersandi (&).
Jos tulostat muuttujan osoitteen näytölle, se näyttää kuten täysin satunnaisluku (lisäksi se voi olla erilainen juoksulta toiselle).
Kokeilkaamme tätä käytännössä osoittimella C esimerkki
Tämän ohjelman tulos on -480613588.
Mikä on osoitin? Osoitin tallentaa arvon tallentamisen sijaan muuttujan osoitteen.
Osoittimen muuttuja
Int * y = & v;
MUUTTUVA
|
POINTER
|
Nimettyyn tallennus- / muistiosoitteeseen tallennettu arvo
|
Muuttuja, joka osoittaa toisen muuttujan tallennus- / muistiosoitteeseen
|
Osoittimen julistaminen
Kuten muuttujat, osoittimet C progra mming on ilmoitettava ennen kuin niitä voidaan käyttää ohjelmassa. Osoittimille voidaan antaa haluamasi nimi, kunhan ne noudattavat C: n nimeämissääntöjä. Osoitinilmoituksella on seuraava muoto.
data_type * pointer_variable_name;
Täällä
- data_type on osoittimen C-muuttujatyyppien perustyyppi ja osoittaa muuttujan tyypin, johon osoitin osoittaa.
- Tähti (*: sama käytetty tähti kerroin), joka on epäsuora operaattori, ilmoittaa osoittimen.
Katsotaanpa joitain kelvollisia osoittimen ilmoituksia tässä C-osoittimen opetusohjelmassa:
Alusta osoitin
Osoittimen ilmoituksen jälkeen alustamme sen kuten vakiomuuttujat muuttuvalla osoitteella. Jos C-ohjelmoinnin osoittimia ei alusteta eikä niitä käytetä ohjelmassa, tulokset ovat arvaamattomia ja mahdollisesti tuhoisia.
Saadaksesi muuttujan osoitteen käytämme ampersand (&) -operaattoria, joka on sijoitettu muuttujan nimen eteen, jonka osoitetta tarvitsemme. Osoittimen alustus tehdään seuraavalla syntaksilla.
Osoittimen syntakse
pointer = &variable;
Alla on yksinkertainen ohjelma osoittimen kuvaamiseen:
Tulos:
Address stored in a variable p is:60ff08Value stored in a variable p is:10
Operaattori |
Merkitys |
* |
Palvelee kahta tarkoitusta
- Osoittimen ilmoitus
- Palauttaa viitatun muuttujan arvon
|
& |
Palvelee vain yhtä tarkoitusta
- Palauttaa muuttujan osoite
|
Osoittintyypit C: ssä
Seuraavassa on erityyppisiä osoittimia C: ssä:
Nollaosoitin
Voimme luoda nollaosoittimen osoittamalla nolla-arvon osoittimen ilmoituksen aikana. Tämä menetelmä on hyödyllinen, kun osoittimelle ei ole määritetty osoitetta. Nollaosoitin sisältää aina arvon 0.
Seuraava ohjelma kuvaa nollaosoittimen käyttöä:
#include <stdio.h>int main(){int *p = NULL; //null pointerprintf("The value inside variable p is:\n%x”,p);return 0;}
Tulos:
The value inside variable p is:0
Void Pointer
C-ohjelmoinnissa tyhjää osoitinta kutsutaan myös yleiseksi osoittimeksi. Sillä ei ole vakiotietotyyppiä. Tyhjä osoitin luodaan käyttämällä avainsanaa void. Sitä voidaan käyttää minkä tahansa muuttujan osoitteen tallentamiseen.
Seuraava ohjelma havainnollistaa tyhjän osoittimen käyttöä:
#include <stdio.h>int main(){void *p = NULL; //void pointerprintf("The size of pointer is:%d\n",sizeof(p));return 0;}
Tulos:
The size of pointer is:4
Villi osoitin
Osoittimen sanotaan olevan villi osoitin, jos sitä ei alusteta mihinkään. Tämäntyyppiset C-osoittimet eivät ole tehokkaita, koska ne voivat viitata tuntemattomaan muistipaikkaan, mikä saattaa aiheuttaa ongelmia ohjelmassamme ja se voi johtaa ohjelman kaatumiseen. On aina oltava varovainen työskennellessäsi villien viitteiden kanssa.
Seuraava ohjelma kuvaa villin osoittimen käyttöä:
#include <stdio.h>int main(){int *p; //wild pointerprintf("\n%d",*p);return
read more