Void işaretci 1 arttırıldığında işaretcinin değeri ne olur? (C Programlama)

NovayaZemlya

Yeni Üye
Katılım
19 Haziran 2023
Mesajlar
1
64 bitlik bir islemci mimarisinde ilk degerini siklarda "base" olarak gosterdigimiz (bu bir adres degeri) bir "void" isaretci 1 arttirildiginda isaretcinin degeri ne olur? (Derlemenin ANSI C gibi C standardina uygun seceneklerle yapıldıgını varsayin.)
A-base + 0000000F
B- base + 0000F000
C- base + F0000000
D- base + 000000F0
E- C standartlannda bu anlamli bir islem degildir.

Açıklayarak soruyu çözer misiniz?
 
C standardına göre bir void işaretçinin değerini 1 attırmak tanımlı değil. Ama sadece standardın ne dediğine bakarsan işi çok eksik bırakmış olursun. Mesela ben şimdi gcc ile denedim, void pointere 1 eklersen değeri 1 artıyor. gcc deki tüm uyarıları açıyorum, gene hiç sıkıntı çıkarmadan 1 arttırıyor.

Ama aynı işlemi g++ ile yaparsan (C++ derleyicisi), o zaman sadece uyarı veriyor, ama gene programı derlemiş oluyor.

Kod:
#include <stdio.h>

void* ptr = (void*)0x100000;

int main(void)
{
    printf("ptr = %p\n", ptr);
    ptr = ptr + 1;
    printf("ptr = %p\n", ptr);

    return 0;
}

Kod:
[ta@bonsai ~]$ gcc a.c
[ta@bonsai ~]$
[ta@bonsai ~]$ ./a.out
ptr = 0x100000
ptr = 0x100001
[ta@bonsai ~]$
[ta@bonsai ~]$ gcc -Wall a.c
[ta@bonsai ~]$
[ta@bonsai ~]$ ./a.out
ptr = 0x100000
ptr = 0x100001
[ta@bonsai ~]$
[ta@bonsai ~]$
[ta@bonsai ~]$ g++ a.c
a.c: In function ‘int main()’:
a.c:8:15: warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith]
    8 |     ptr = ptr + 1;
      |           ~~~~^~~
[ta@bonsai ~]$
[ta@bonsai ~]$
[ta@bonsai ~]$ ./a.out
ptr = 0x100000
ptr = 0x100001
[ta@bonsai ~]$
 

Forum istatistikleri

Konular
7,361
Mesajlar
124,441
Üyeler
2,985
Son üye
sertoglu42

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top