Const char *e ile char *e arasındaki fark nedir?

UmpaLumpalar

Centipat
Katılım
8 Ocak 2022
Mesajlar
72
Daha fazla  
Cinsiyet
Erkek
void print_array(char* e)
{cout << e;}

Yaptığım zaman ve parametre olacak "Merhaba" gönderdikten sonra hata alıyorum.

Fakat,

void print_array(const char* e)

{cout << e;} yaptığım zaman ve yine "Merhaba" gönderdikten sonra sorunsuz çalışıyor. Const'un ne olduğunu biliyorum fakat buradaki temel farkı anlayamadım. Yardımcı olursanız çok sevinirim. Şimdiden teşekkürler.
 
Ne hata alıyorsun?
Ekran görüntüsü 2022-10-08 220431.png
 
Eğer fonksiyon parametresi için const kullanırsan bunun anlamı o parametrenin fonksiyon tarafından değiştirilmeyeceğinin ifadesidir.

Örneğin fonksiyona bir dizi geçiriyoruz ve fonksiyon içinde bu dizi elemanlarına erişip değişiklik yapıyorsak bunu normal tanımlarız aksi halde değişiklik yapmiyorsak const yaparız.

Faydalı bir kodlama tekniğirdir, mutlaka kullan.
 
Eğer fonksiyon parametresi için const kullanırsan bunun anlamı o parametrenin fonksiyon tarafından değiştirilmeyeceğinin ifadesidir.

Örneğin fonksiyona bir dizi geçiriyoruz ve fonksiyon içinde bu dizi elemanlarına erişip değişiklik yapıyorsak bunu normal tanımlarız aksi halde değişiklik yapmiyorsak const yaparız.

Faydalı bir kodlama tekniğirdir, mutlaka kullan.
Öncelikle teşekkür ederim. Anladım. Fakat bir şeye değinmek istiyorum. Benim burada yaptığım şey herhangi bir değişiklik değil. İllaki const ile mi kullanmam gerekiyor? Const kullanıldığı zaman evet yararlı oluyor ama burada gereksiz kaçmaz mı? Üstelik hata olarak neden dönüyor?
 
const * data_type Constanttan pointera demek. Pointer tarafından işaret edilen veriler sabittir ve değiştirilemez. Bununla birlikte, pointerın kendisi değişebilir ve başka bir yere işaret edebilir (pointerın kendisi bir değişken olduğu için).

Ayrıca değişken olmayan stringler birer constanttır. Dolayısıyla constanttan pointera bir sabiti, pointera dönüştürmeye çalışmış oluyorsun. Bunun yerine elindeki stringi bir char pointera kaydedip ordan geçirirsen hata almaman lazım.

C++:
#include <iostream>
using namespace std;

void print(char* e) {
    cout << e;
}

int main(int argc, char** argv) {
    char * msg1 = "Merhaba dunya!";
    print(msg1);
    return 0;
}
 
Öncelikle teşekkür ederim. Anladım. Fakat bir şeye değinmek istiyorum. Benim burada yaptığım şey herhangi bir değişiklik değil. İllaki const ile mi kullanmam gerekiyor? Const kullanıldığı zaman evet yararlı oluyor ama burada gereksiz kaçmaz mı? Üstelik hata olarak neden dönüyor?
Olur mu hic oyle ya fonksiyon icinde array erisip degisiklik yapmaya kalksaydik? Merhaba dunya const, tanimsiz davranis gerceklesirdi. Mantiksiz olurdu.
 
Olur mu hic oyle ya fonksiyon icinde array erisip degisiklik yapmaya kalksaydik? Merhaba dunya const, tanimsiz davranis gerceklesirdi. Mantiksiz olurdu.
yani biz daha önceden önlemimizi almamız lazım ve const ile başlatmamız lazım değil mi? Biraz kafam karıştı fakat oturmaya başladı sanırım.
 

Yeni konular

Geri
Yukarı