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,994
Mesajlar
131,819
Üyeler
3,189
Son üye
Crow

Son kaynaklar

Son profil mesajları

erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Mutluluğun resmi illa güzel çizilmiş tablo olmak zorunda değil.Bazen basit bir çizgi,doğru bir renk,yada küçük bir detay
Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Back
Top