C-də asılmış bir göstərici ilə null göstərici arasındakı fərq nədir? Texniki cəhətdən hər ikisi eyni görünür.


cavab 1:

Bu göstəricilərdən birini sevməyincə heç bir fərq yoxdur. Buna görə Schlenker, göstərici ilə göstərilən yaddaşın başqa bir şey üçün yenidən istifadə edilə biləcəyi deməkdir. Bununla birlikdə, proqram köhnə məzmunun hələ də olduğunu düşünür və ona daxil olmağa çalışır. Bu ümumiyyətlə proqramın icrası zamanı səhv davranışa səbəb olur.

Bundan əlavə, hesab edirəm ki, sualın özü "göstəriciləri başa düşməməyinizi" ciddi şəkildə təklif edir. Hər bir sahənin (bir dəyər, ümumiyyətlə 0 ... 255) məzmuna sahib ola biləcəyi bir sıra nömrəli sahələr kimi yaddaşı düşünsəniz, göstərici sadəcə bir tamdır (burada memarlıq xüsusiyyətlərini sadələşdirirəm) Nömrə bu qutulardan birini (dəyəri deyil) ehtiva edir.


cavab 2:

Mən burada çox "ingilis" görürəm, bu konsepsiyanı artıq bilən birisi üçün faydalı ola bilər, amma bilməyənlər üçün bu qəbih sözlərdən başqa bir şey olmayacaq. Bununla birlikdə, məzəli cavab cavablarda və metaforalarda qeyd olunur. Üzr istəyirik ki, kimisə incidirsə.

Null göstərici: Heç bir ünvana yer verən və ya NULL deyən bir göstərici. Bu nöqtədə yazmaq səhvdir. Bu, proqramçıların təsadüfən bir yerə yazmağının qarşısını almaqdır ki, bu da seqmentasiya səhvlərinə və / və ya qəzaya səbəb ola bilər. Yazıçı həmişə yazılmadan əvvəl NULL ilə işlənməlidir və NULL üçün yoxlanılmalıdır. Bu ssenarini nəzərdən keçirin:

int * p; // Hal-hazırda bu göstərici təsadüfi bir ünvanı ehtiva edir və seqmentdən kənarda da istənilən mövqeyə istinad edə bilər

* p = 10; // Bu mütləq bir səhv verəcəkdir.

təhlükəsiz bir şey olardı:

int * p = NULL;

əgər (p! = NULL)

* p = 10;

Sıxanan göstərici: Adından da göründüyü kimi, işarələdiyi heç bir fikri olmayan bir göstəricidir, çünki əvvəlcə işarə etdiyi yaddaş bloku birtəhər buraxıldı.

Bir göstərici bağlamaq üçün bir çox yol var. Ən ümumi yol, yenisini yaratmaq, kopyalamaq və silmək olardı

int * p = NULL; int * q = NULL;

p = yeni x;

q = p;

q silmək; // q və q yaddaş bloku göstərici yaddaşdan silinir

// buradan yaddaşda olmayan bir ünvanı olan bir göstərici p var. Bu göstərici üçün bir dəyər təyin etməyə çalışırıqsa, problemimiz var, p göstərici burada asılır

* p = 10; // qəza

Təsadüfən asılmış bir göstərici yarada biləcəyiniz başqa bir yol, obyektin düz bir nüsxəsini düzəltmək və ya bir tərtibçi tərəfindən təmin edilmiş bir nüsxə konstruktorundan istifadə edərək bir metodu ötürməkdir və bu da öz növbəsində düzdür Sizin üçün hazırlanmış surəti.


cavab 3:

Mən burada çox "ingilis" görürəm, bu konsepsiyanı artıq bilən birisi üçün faydalı ola bilər, amma bilməyənlər üçün bu qəbih sözlərdən başqa bir şey olmayacaq. Bununla birlikdə, məzəli cavab cavablarda və metaforalarda qeyd olunur. Üzr istəyirik ki, kimisə incidirsə.

Null göstərici: Heç bir ünvana yer verən və ya NULL deyən bir göstərici. Bu nöqtədə yazmaq səhvdir. Bu, proqramçıların təsadüfən bir yerə yazmağının qarşısını almaqdır ki, bu da seqmentasiya səhvlərinə və / və ya qəzaya səbəb ola bilər. Yazıçı həmişə yazılmadan əvvəl NULL ilə işlənməlidir və NULL üçün yoxlanılmalıdır. Bu ssenarini nəzərdən keçirin:

int * p; // Hal-hazırda bu göstərici təsadüfi bir ünvanı ehtiva edir və seqmentdən kənarda da istənilən mövqeyə istinad edə bilər

* p = 10; // Bu mütləq bir səhv verəcəkdir.

təhlükəsiz bir şey olardı:

int * p = NULL;

əgər (p! = NULL)

* p = 10;

Sıxanan göstərici: Adından da göründüyü kimi, işarələdiyi heç bir fikri olmayan bir göstəricidir, çünki əvvəlcə işarə etdiyi yaddaş bloku birtəhər buraxıldı.

Bir göstərici bağlamaq üçün bir çox yol var. Ən ümumi yol, yenisini yaratmaq, kopyalamaq və silmək olardı

int * p = NULL; int * q = NULL;

p = yeni x;

q = p;

q silmək; // q və q yaddaş bloku göstərici yaddaşdan silinir

// buradan yaddaşda olmayan bir ünvanı olan bir göstərici p var. Bu göstərici üçün bir dəyər təyin etməyə çalışırıqsa, problemimiz var, p göstərici burada asılır

* p = 10; // qəza

Təsadüfən asılmış bir göstərici yarada biləcəyiniz başqa bir yol, obyektin düz bir nüsxəsini düzəltmək və ya bir tərtibçi tərəfindən təmin edilmiş bir nüsxə konstruktorundan istifadə edərək bir metodu ötürməkdir və bu da öz növbəsində düzdür Sizin üçün hazırlanmış surəti.


cavab 4:

Mən burada çox "ingilis" görürəm, bu konsepsiyanı artıq bilən birisi üçün faydalı ola bilər, amma bilməyənlər üçün bu qəbih sözlərdən başqa bir şey olmayacaq. Bununla birlikdə, məzəli cavab cavablarda və metaforalarda qeyd olunur. Üzr istəyirik ki, kimisə incidirsə.

Null göstərici: Heç bir ünvana yer verən və ya NULL deyən bir göstərici. Bu nöqtədə yazmaq səhvdir. Bu, proqramçıların təsadüfən bir yerə yazmağının qarşısını almaqdır ki, bu da seqmentasiya səhvlərinə və / və ya qəzaya səbəb ola bilər. Yazıçı həmişə yazılmadan əvvəl NULL ilə işlənməlidir və NULL üçün yoxlanılmalıdır. Bu ssenarini nəzərdən keçirin:

int * p; // Hal-hazırda bu göstərici təsadüfi bir ünvanı ehtiva edir və seqmentdən kənarda da istənilən mövqeyə istinad edə bilər

* p = 10; // Bu mütləq bir səhv verəcəkdir.

təhlükəsiz bir şey olardı:

int * p = NULL;

əgər (p! = NULL)

* p = 10;

Sıxanan göstərici: Adından da göründüyü kimi, işarələdiyi heç bir fikri olmayan bir göstəricidir, çünki əvvəlcə işarə etdiyi yaddaş bloku birtəhər buraxıldı.

Bir göstərici bağlamaq üçün bir çox yol var. Ən ümumi yol, yenisini yaratmaq, kopyalamaq və silmək olardı

int * p = NULL; int * q = NULL;

p = yeni x;

q = p;

q silmək; // q və q yaddaş bloku göstərici yaddaşdan silinir

// buradan yaddaşda olmayan bir ünvanı olan bir göstərici p var. Bu göstərici üçün bir dəyər təyin etməyə çalışırıqsa, problemimiz var, p göstərici burada asılır

* p = 10; // qəza

Təsadüfən asılmış bir göstərici yarada biləcəyiniz başqa bir yol, obyektin düz bir nüsxəsini düzəltmək və ya bir tərtibçi tərəfindən təmin edilmiş bir nüsxə konstruktorundan istifadə edərək bir metodu ötürməkdir və bu da öz növbəsində düzdür Sizin üçün hazırlanmış surəti.


cavab 5:

Mən burada çox "ingilis" görürəm, bu konsepsiyanı artıq bilən birisi üçün faydalı ola bilər, amma bilməyənlər üçün bu qəbih sözlərdən başqa bir şey olmayacaq. Bununla birlikdə, məzəli cavab cavablarda və metaforalarda qeyd olunur. Üzr istəyirik ki, kimisə incidirsə.

Null göstərici: Heç bir ünvana yer verən və ya NULL deyən bir göstərici. Bu nöqtədə yazmaq səhvdir. Bu, proqramçıların təsadüfən bir yerə yazmağının qarşısını almaqdır ki, bu da seqmentasiya səhvlərinə və / və ya qəzaya səbəb ola bilər. Yazıçı həmişə yazılmadan əvvəl NULL ilə işlənməlidir və NULL üçün yoxlanılmalıdır. Bu ssenarini nəzərdən keçirin:

int * p; // Hal-hazırda bu göstərici təsadüfi bir ünvanı ehtiva edir və seqmentdən kənarda da istənilən mövqeyə istinad edə bilər

* p = 10; // Bu mütləq bir səhv verəcəkdir.

təhlükəsiz bir şey olardı:

int * p = NULL;

əgər (p! = NULL)

* p = 10;

Sıxanan göstərici: Adından da göründüyü kimi, işarələdiyi heç bir fikri olmayan bir göstəricidir, çünki əvvəlcə işarə etdiyi yaddaş bloku birtəhər buraxıldı.

Bir göstərici bağlamaq üçün bir çox yol var. Ən ümumi yol, yenisini yaratmaq, kopyalamaq və silmək olardı

int * p = NULL; int * q = NULL;

p = yeni x;

q = p;

q silmək; // q və q yaddaş bloku göstərici yaddaşdan silinir

// buradan yaddaşda olmayan bir ünvanı olan bir göstərici p var. Bu göstərici üçün bir dəyər təyin etməyə çalışırıqsa, problemimiz var, p göstərici burada asılır

* p = 10; // qəza

Təsadüfən asılmış bir göstərici yarada biləcəyiniz başqa bir yol, obyektin düz bir nüsxəsini düzəltmək və ya bir tərtibçi tərəfindən təmin edilmiş bir nüsxə konstruktorundan istifadə edərək bir metodu ötürməkdir və bu da öz növbəsində düzdür Sizin üçün hazırlanmış surəti.


cavab 6:

Mən burada çox "ingilis" görürəm, bu konsepsiyanı artıq bilən birisi üçün faydalı ola bilər, amma bilməyənlər üçün bu qəbih sözlərdən başqa bir şey olmayacaq. Bununla birlikdə, məzəli cavab cavablarda və metaforalarda qeyd olunur. Üzr istəyirik ki, kimisə incidirsə.

Null göstərici: Heç bir ünvana yer verən və ya NULL deyən bir göstərici. Bu nöqtədə yazmaq səhvdir. Bu, proqramçıların təsadüfən bir yerə yazmağının qarşısını almaqdır ki, bu da seqmentasiya səhvlərinə və / və ya qəzaya səbəb ola bilər. Yazıçı həmişə yazılmadan əvvəl NULL ilə işlənməlidir və NULL üçün yoxlanılmalıdır. Bu ssenarini nəzərdən keçirin:

int * p; // Hal-hazırda bu göstərici təsadüfi bir ünvanı ehtiva edir və seqmentdən kənarda da istənilən mövqeyə istinad edə bilər

* p = 10; // Bu mütləq bir səhv verəcəkdir.

təhlükəsiz bir şey olardı:

int * p = NULL;

əgər (p! = NULL)

* p = 10;

Sıxanan göstərici: Adından da göründüyü kimi, işarələdiyi heç bir fikri olmayan bir göstəricidir, çünki əvvəlcə işarə etdiyi yaddaş bloku birtəhər buraxıldı.

Bir göstərici bağlamaq üçün bir çox yol var. Ən ümumi yol, yenisini yaratmaq, kopyalamaq və silmək olardı

int * p = NULL; int * q = NULL;

p = yeni x;

q = p;

q silmək; // q və q yaddaş bloku göstərici yaddaşdan silinir

// buradan yaddaşda olmayan bir ünvanı olan bir göstərici p var. Bu göstərici üçün bir dəyər təyin etməyə çalışırıqsa, problemimiz var, p göstərici burada asılır

* p = 10; // qəza

Təsadüfən asılmış bir göstərici yarada biləcəyiniz başqa bir yol, obyektin düz bir nüsxəsini düzəltmək və ya bir tərtibçi tərəfindən təmin edilmiş bir nüsxə konstruktorundan istifadə edərək bir metodu ötürməkdir və bu da öz növbəsində düzdür Sizin üçün hazırlanmış surəti.


cavab 7:

Mən burada çox "ingilis" görürəm, bu konsepsiyanı artıq bilən birisi üçün faydalı ola bilər, amma bilməyənlər üçün bu qəbih sözlərdən başqa bir şey olmayacaq. Bununla birlikdə, məzəli cavab cavablarda və metaforalarda qeyd olunur. Üzr istəyirik ki, kimisə incidirsə.

Null göstərici: Heç bir ünvana yer verən və ya NULL deyən bir göstərici. Bu nöqtədə yazmaq səhvdir. Bu, proqramçıların təsadüfən bir yerə yazmağının qarşısını almaqdır ki, bu da seqmentasiya səhvlərinə və / və ya qəzaya səbəb ola bilər. Yazıçı həmişə yazılmadan əvvəl NULL ilə işlənməlidir və NULL üçün yoxlanılmalıdır. Bu ssenarini nəzərdən keçirin:

int * p; // Hal-hazırda bu göstərici təsadüfi bir ünvanı ehtiva edir və seqmentdən kənarda da istənilən mövqeyə istinad edə bilər

* p = 10; // Bu mütləq bir səhv verəcəkdir.

təhlükəsiz bir şey olardı:

int * p = NULL;

əgər (p! = NULL)

* p = 10;

Sıxanan göstərici: Adından da göründüyü kimi, işarələdiyi heç bir fikri olmayan bir göstəricidir, çünki əvvəlcə işarə etdiyi yaddaş bloku birtəhər buraxıldı.

Bir göstərici bağlamaq üçün bir çox yol var. Ən ümumi yol, yenisini yaratmaq, kopyalamaq və silmək olardı

int * p = NULL; int * q = NULL;

p = yeni x;

q = p;

q silmək; // q və q yaddaş bloku göstərici yaddaşdan silinir

// buradan yaddaşda olmayan bir ünvanı olan bir göstərici p var. Bu göstərici üçün bir dəyər təyin etməyə çalışırıqsa, problemimiz var, p göstərici burada asılır

* p = 10; // qəza

Təsadüfən asılmış bir göstərici yarada biləcəyiniz başqa bir yol, obyektin düz bir nüsxəsini düzəltmək və ya bir tərtibçi tərəfindən təmin edilmiş bir nüsxə konstruktorundan istifadə edərək bir metodu ötürməkdir və bu da öz növbəsində düzdür Sizin üçün hazırlanmış surəti.


cavab 8:

Mən burada çox "ingilis" görürəm, bu konsepsiyanı artıq bilən birisi üçün faydalı ola bilər, amma bilməyənlər üçün bu qəbih sözlərdən başqa bir şey olmayacaq. Bununla birlikdə, məzəli cavab cavablarda və metaforalarda qeyd olunur. Üzr istəyirik ki, kimisə incidirsə.

Null göstərici: Heç bir ünvana yer verən və ya NULL deyən bir göstərici. Bu nöqtədə yazmaq səhvdir. Bu, proqramçıların təsadüfən bir yerə yazmağının qarşısını almaqdır ki, bu da seqmentasiya səhvlərinə və / və ya qəzaya səbəb ola bilər. Yazıçı həmişə yazılmadan əvvəl NULL ilə işlənməlidir və NULL üçün yoxlanılmalıdır. Bu ssenarini nəzərdən keçirin:

int * p; // Hal-hazırda bu göstərici təsadüfi bir ünvanı ehtiva edir və seqmentdən kənarda da istənilən mövqeyə istinad edə bilər

* p = 10; // Bu mütləq bir səhv verəcəkdir.

təhlükəsiz bir şey olardı:

int * p = NULL;

əgər (p! = NULL)

* p = 10;

Sıxanan göstərici: Adından da göründüyü kimi, işarələdiyi heç bir fikri olmayan bir göstəricidir, çünki əvvəlcə işarə etdiyi yaddaş bloku birtəhər buraxıldı.

Bir göstərici bağlamaq üçün bir çox yol var. Ən ümumi yol, yenisini yaratmaq, kopyalamaq və silmək olardı

int * p = NULL; int * q = NULL;

p = yeni x;

q = p;

q silmək; // q və q yaddaş bloku göstərici yaddaşdan silinir

// buradan yaddaşda olmayan bir ünvanı olan bir göstərici p var. Bu göstərici üçün bir dəyər təyin etməyə çalışırıqsa, problemimiz var, p göstərici burada asılır

* p = 10; // qəza

Təsadüfən asılmış bir göstərici yarada biləcəyiniz başqa bir yol, obyektin düz bir nüsxəsini düzəltmək və ya bir tərtibçi tərəfindən təmin edilmiş bir nüsxə konstruktorundan istifadə edərək bir metodu ötürməkdir və bu da öz növbəsində düzdür Sizin üçün hazırlanmış surəti.


cavab 9:

Mən burada çox "ingilis" görürəm, bu konsepsiyanı artıq bilən birisi üçün faydalı ola bilər, amma bilməyənlər üçün bu qəbih sözlərdən başqa bir şey olmayacaq. Bununla birlikdə, məzəli cavab cavablarda və metaforalarda qeyd olunur. Üzr istəyirik ki, kimisə incidirsə.

Null göstərici: Heç bir ünvana yer verən və ya NULL deyən bir göstərici. Bu nöqtədə yazmaq səhvdir. Bu, proqramçıların təsadüfən bir yerə yazmağının qarşısını almaqdır ki, bu da seqmentasiya səhvlərinə və / və ya qəzaya səbəb ola bilər. Yazıçı həmişə yazılmadan əvvəl NULL ilə işlənməlidir və NULL üçün yoxlanılmalıdır. Bu ssenarini nəzərdən keçirin:

int * p; // Hal-hazırda bu göstərici təsadüfi bir ünvanı ehtiva edir və seqmentdən kənarda da istənilən mövqeyə istinad edə bilər

* p = 10; // Bu mütləq bir səhv verəcəkdir.

təhlükəsiz bir şey olardı:

int * p = NULL;

əgər (p! = NULL)

* p = 10;

Sıxanan göstərici: Adından da göründüyü kimi, işarələdiyi heç bir fikri olmayan bir göstəricidir, çünki əvvəlcə işarə etdiyi yaddaş bloku birtəhər buraxıldı.

Bir göstərici bağlamaq üçün bir çox yol var. Ən ümumi yol, yenisini yaratmaq, kopyalamaq və silmək olardı

int * p = NULL; int * q = NULL;

p = yeni x;

q = p;

q silmək; // q və q yaddaş bloku göstərici yaddaşdan silinir

// buradan yaddaşda olmayan bir ünvanı olan bir göstərici p var. Bu göstərici üçün bir dəyər təyin etməyə çalışırıqsa, problemimiz var, p göstərici burada asılır

* p = 10; // qəza

Təsadüfən asılmış bir göstərici yarada biləcəyiniz başqa bir yol, obyektin düz bir nüsxəsini düzəltmək və ya bir tərtibçi tərəfindən təmin edilmiş bir nüsxə konstruktorundan istifadə edərək bir metodu ötürməkdir və bu da öz növbəsində düzdür Sizin üçün hazırlanmış surəti.


cavab 10:

Mən burada çox "ingilis" görürəm, bu konsepsiyanı artıq bilən birisi üçün faydalı ola bilər, amma bilməyənlər üçün bu qəbih sözlərdən başqa bir şey olmayacaq. Bununla birlikdə, məzəli cavab cavablarda və metaforalarda qeyd olunur. Üzr istəyirik ki, kimisə incidirsə.

Null göstərici: Heç bir ünvana yer verən və ya NULL deyən bir göstərici. Bu nöqtədə yazmaq səhvdir. Bu, proqramçıların təsadüfən bir yerə yazmağının qarşısını almaqdır ki, bu da seqmentasiya səhvlərinə və / və ya qəzaya səbəb ola bilər. Yazıçı həmişə yazılmadan əvvəl NULL ilə işlənməlidir və NULL üçün yoxlanılmalıdır. Bu ssenarini nəzərdən keçirin:

int * p; // Hal-hazırda bu göstərici təsadüfi bir ünvanı ehtiva edir və seqmentdən kənarda da istənilən mövqeyə istinad edə bilər

* p = 10; // Bu mütləq bir səhv verəcəkdir.

təhlükəsiz bir şey olardı:

int * p = NULL;

əgər (p! = NULL)

* p = 10;

Sıxanan göstərici: Adından da göründüyü kimi, işarələdiyi heç bir fikri olmayan bir göstəricidir, çünki əvvəlcə işarə etdiyi yaddaş bloku birtəhər buraxıldı.

Bir göstərici bağlamaq üçün bir çox yol var. Ən ümumi yol, yenisini yaratmaq, kopyalamaq və silmək olardı

int * p = NULL; int * q = NULL;

p = yeni x;

q = p;

q silmək; // q və q yaddaş bloku göstərici yaddaşdan silinir

// buradan yaddaşda olmayan bir ünvanı olan bir göstərici p var. Bu göstərici üçün bir dəyər təyin etməyə çalışırıqsa, problemimiz var, p göstərici burada asılır

* p = 10; // qəza

Təsadüfən asılmış bir göstərici yarada biləcəyiniz başqa bir yol, obyektin düz bir nüsxəsini düzəltmək və ya bir tərtibçi tərəfindən təmin edilmiş bir nüsxə konstruktorundan istifadə edərək bir metodu ötürməkdir və bu da öz növbəsində düzdür Sizin üçün hazırlanmış surəti.