Pointers

pointers යනු memory address ගබඩා කළ හැකි විශේෂ විචල්‍යය වර්ගයකි, මෙම වර්ගය සාමාන්‍ය විචල්‍යයට * එකතු කිරීමෙන් ලබා ගත හැක. තවද විචල්‍යයක් ගබඩා වී ඇති memory address එක ලබාගැනීම එයට ඉදිරියෙන් & එකතු කිරීමෙන් කරගත හැක.
int i = 10; int* j = &i; int *k = &i;

ධාවනය වන මොහොතේ මතකය වෙන් කරගැනීම(memory allocation)

C වල අප මෙතෙක් මතකය වෙන් කිරීමට භාවිතා කරන ලද්දේ static memory allocation ය, මෙහි දී යම් විචල්‍යයක් භාවිතා කළ හැකිවන්නෙ එය declare කර ඇති {, } වලින් වට වූ කේත රාමුව තුළ පමණි(code block). මෙසේ වෙන් කරන ලද මතකය කේත රාමුවෙන් පිට වනවිට විනාශ වේ, එසේ වීමට ඉඩ නොදී යම් මාතක ධාරිතාවක් අපට අවශ්‍යය ආකාරයට මෘදුකාංගයේ ධාවන කාලය ඇතුළත ඕනෑම කේත රාමුවක සිට එකම මතකය භාවිත කිරීමට හැකි ලෙස C හි ලබාදී ඇති අංගයක් ලෙස dynamic memory allocation හැදින්විය හැක.  
#include // stdlib.h ගොනුව ගැන// ..
int *p=(int *) malloc(4);
char *s=(char *) malloc(10);
// ..
මෙහි දී malloc මඟින් ලබාදෙන්නෙ void * විචල්‍යයකි, එනම් අප ඉල්ලන ලද මතකය පටන්ගන්නා ස්ථානයට void pointer එකකි. මෙය අපට අවශ්‍ය පරිදි cast කරගත හැක බොහෝ compilers වල මෙය සිදුකරගනී. එහෙත් නියම ආකාර නිවැරදි කේතයක මෙය අඩංගු විය යුතුය. එවිට ඕනෑ ම compiler එකක් එය compile කිරීමට භාවිත කළ හැක. පසුව ඔබ වෙන් කරගත් ඉඩෙහි කැමැති ආකාර වෙනස්කම් මෙම pointer එක භාවිතයෙන් කරගත හැක. {flike}

You may also like

HelloWorld.c
C පරිගණක ක්‍රමලේඛන භාෂාව-පිවිසුම
විචල්‍යයන්