C# Programlama Değişken ve Bellek Adresi

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
▃ ▅ ησ ♥ яєѕρєcт ▅ ▃
Süper Üye
Katılım
24 Eyl 2016
Mesajlar
600
Tepki puanı
10
Ödüller
9
9 HİZMET YILI
Değişken ve Bellek Adresi
Bilgisayarın ana belleği (RAM) sıralı kaydetme gözlerinden oluşmuştur. Her göze bir adres atanmıştır. Bu adreslerin değerleri 0 ila belleğin sahip olduğu üst değere bağlı olarak değişebilir. Örneğin 1GB MB bir bellek, 1024*1024*1024 = 1073741824 adet gözden oluşur. Değişken tiplerinin bellekte işgal ettiği alanın bayt cinsinden uzunluğusizeof() operatörüyle öğrenildiğini hatırlayın. (bkz:

Kod:
/* 02prg01.c : sizeof operatörünün kullanımı */

#include <stdio.h>

main()
{
  printf( "char           : %d bayt\n", sizeof(char));
  printf( "short          : %d bayt\n", sizeof(short));
  printf( "int            : %d bayt\n", sizeof(int));
  printf( "long           : %d bayt\n", sizeof(long));
  printf( "unsigned char  : %d bayt\n", sizeof(unsigned char));
  printf( "unsigned short : %d bayt\n", sizeof(unsigned short));
  printf( "unsigned int   : %d bayt\n", sizeof(unsigned int));
  printf( "unsigned long  : %d bayt\n", sizeof(unsigned long));
  printf( "float          : %d bayt\n", sizeof(float));
  printf( "double         : %d bayt\n", sizeof(double));
  printf( "long double    : %d bayt\n", sizeof(long double));
}
Bir programlama dillinde, belli bir tipte değişken tanımlanıp ve bir değer atandığında, o değişkene dört temel özellik eşlik eder:
  1. değişkenin adı​
  2. değişkenin tipi​
  3. değişkenin sahip olduğu değer (içerik)​
  4. değişkenin bellekteki adresi​
Örneğin tam adlı bir tamsayı değişkenini aşağıdaki gibi tanımladığımızı varsayalım:
Kod:
int tam = 33;

Bu değişken için, int tipinde bellekte (genellikle herbiri 1 bayt olan 4 bayt büyüklüğünde) bir hücre ayrılır ve o hücreye 33 sayısı ikilik (binary) sayı sitemindeki karşılığı olan 4 baytlık (32 bitlik):
00000000 00000000 00000000 00100001
sayısı elektronik olarak yazılır. tam değişkenine ait dört temel özellik Şekil 11.1'deki gibi gösterilebilir:
1646459235454.png


Şekil 11.1: Bir değişkene eşlik eden dört temel özellik
Bellek adresleri genellikle onaltılık (hexadecimal) sayı sisteminde ifade edilir. 0x3fffd14 sayısı onluk (decimal) sayı sisteminde 67108116 sayına karşık gelir. Bunun anlamı, tam değişkeni, program çalıştığı sürece, bellekte 67108116. - 67108120. numaralı gözler arasındaki 4 baytlık hücreyi işgal edecek olmasıdır. Şekil 11.1'deki gösterim, basit ama anlaşılır bir tasvirdir. Gerçekte, int tipindeki tam değişkeninin bellekteki yerleşimi ve içeriği (değeri) Şekil 11.2'de gösterildiği gibi olacaktır.
1646459261040.png


Şekil 11.2: tam adlı değişkenin bellekteki gerçek konumu ve ikilik düzendeki içeriği
Değişkenin saklı olduğu adres, & karakteri ile tanımlı adres operatörü ile öğrenilebilir. Bu operatör bir değişkenin önüne konursa, o değişkenin içeriği ile değil adresi ile ilgileniliyor anlamına gelir. Aşağıdaki program parçasının:

Kod:
   int tam = 33;



          printf("icerik: %d\n",tam);

          printf("adres : %p\n",&tam);

çıktısı:

Kod:
icerik: 33
          adres : 3fffd14

şeklindedir. Burada birinci satır tam değişkeninin içeriği, ikinci ise adresidir. Adres yazdırılırken %p tip belirleyicisinin kullanıldığına dikkat ediniz.
 
Moderatörün son düzenlenenleri:
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst