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.

a.c:
#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;
}

Bash:
[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 ~]$
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,897
Mesajlar
100,640
Üyeler
2,496
Son üye
can12

Son kaynaklar

Son profil mesajları

Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top