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,719
Mesajlar
128,470
Üyeler
3,117
Son üye
MekanikAdam

Son kaynaklar

Son profil mesajları

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ı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
az bilgili çok meraklı
Back
Top