ما هو الفرق بين مؤشر التعلق ومؤشر فارغ في C؟ من الناحية الفنية ، كلاهما يبدو نفسه.


الاجابه 1:

لا يوجد فرق طالما أنك لا ترغب في تحديد أي من تلك المؤشرات. لذلك ، يشير التعلق إلى أنه يُسمح بإعادة استخدام الذاكرة التي يشير إليها المؤشر لشيء آخر ، لكن البرنامج يفترض أن المحتوى القديم لا يزال موجودًا ويحاول الوصول إليه. هذا يؤدي عادة إلى سلوك غير صحيح في مرحلة ما في تنفيذ البرنامج.

بالإضافة إلى ذلك ، أشعر أن السؤال نفسه يشير بقوة إلى أنك لا "تفهم المؤشرات". إذا كنت تتخيل الذاكرة كخط من مربعات مرقمة ، حيث يمكن أن يحتوي كل مربع على محتوى (قيمة ، عادةً 0 ... 255) ، فالمؤشر هو ببساطة عدد صحيح (أنا أبسط التفاصيل المعمارية هنا) يحتفظ بالرقم (وليس الرقم قيمة) واحدة من تلك الصناديق.


الاجابه 2:

أرى الكثير من "اللغة الإنجليزية" هنا ، والتي قد تكون مفيدة لشخص يعرف هذا المفهوم بالفعل ولكن بالنسبة لشخص لا يعرف ذلك ، لن تكون سوى نصوص رطانة. ومع ذلك فإن حاصل المتعة في الإجابات والاستعارات تدق ، الاعتذار إذا كان يهين أي شخص.

Null Pointer: مؤشر يحتوي على العنوان إلى لا شيء أو يقول موقع NULL. الكتابة على هذا الموقع خطأ. تم تصميم هذا لمنع المبرمجين من الكتابة بشكل عرضي على موقع الذاكرة مما قد يؤدي إلى حدوث خطأ تجزئة و / أو تعطل. كانت الفكرة دائمًا تهيئة مؤشر باستخدام NULL والتحقق من NULL قبل الكتابة. النظر في هذا السيناريو:

int * p؛ // الآن يحتوي هذا المؤشر على عنوان عشوائي ، ويمكن أن يشير إلى أي مكان ، حتى خارج المقطع

* ع = 10 ؛ // هذا بالتأكيد سوف يعطي خطأ.

الطريقة الآمنة ستكون مثل هذا:

int * p = NULL ؛

إذا (ص! = NULL)

* ع = 10 ؛

مؤشر التعلق: كما يوحي الاسم ، فإن المؤشر غير جاهز إلى حيث يجب الإشارة إلى أن كتلة الذاكرة التي كانت تشير إليها في الأصل يتم تحريرها بطريقة أو بأخرى.

هناك العديد من الطرق الممكنة لجعل مؤشر تتدلى. الطريقة الأكثر شيوعًا هي النسخة الجديدة والنسخ والحذف

int * p = NULL ؛ int * q = NULL؛

ع = س جديدة ؛

ف = ع ؛

حذف ف ؛ // تتم إزالة كل من q ومؤشر كتلة الذاكرة بواسطة q من الذاكرة

// من هنا لدينا مؤشر p له عنوان غير موجود في الذاكرة. إذا حاولنا تعيين بعض القيمة لهذا المؤشر ، فنحن في ورطة ، p هنا هو المؤشر المتدلي

* ع = 10 ؛ //يصطدم

من الطرق الأخرى التي يمكنك من خلالها إنشاء مؤشر التعلق بطريق الخطأ القيام بنسخة ضحلة من الكائن إما عن طريق التعيين أو عن طريق تمرير كائن إلى طريقة وبالتالي باستخدام مُنشئ نسخ مُقدم بواسطة برنامج التحويل البرمجي والذي يقوم أيضًا بنسخ نسخة ضحلة لك.


الاجابه 3:

أرى الكثير من "اللغة الإنجليزية" هنا ، والتي قد تكون مفيدة لشخص يعرف هذا المفهوم بالفعل ولكن بالنسبة لشخص لا يعرف ذلك ، لن تكون سوى نصوص رطانة. ومع ذلك فإن حاصل المتعة في الإجابات والاستعارات تدق ، الاعتذار إذا كان يهين أي شخص.

Null Pointer: مؤشر يحتوي على العنوان إلى لا شيء أو يقول موقع NULL. الكتابة على هذا الموقع خطأ. تم تصميم هذا لمنع المبرمجين من الكتابة بشكل عرضي على موقع الذاكرة مما قد يؤدي إلى حدوث خطأ تجزئة و / أو تعطل. كانت الفكرة دائمًا تهيئة مؤشر باستخدام NULL والتحقق من NULL قبل الكتابة. النظر في هذا السيناريو:

int * p؛ // الآن يحتوي هذا المؤشر على عنوان عشوائي ، ويمكن أن يشير إلى أي مكان ، حتى خارج المقطع

* ع = 10 ؛ // هذا بالتأكيد سوف يعطي خطأ.

الطريقة الآمنة ستكون مثل هذا:

int * p = NULL ؛

إذا (ص! = NULL)

* ع = 10 ؛

مؤشر التعلق: كما يوحي الاسم ، فإن المؤشر غير جاهز إلى حيث يجب الإشارة إلى أن كتلة الذاكرة التي كانت تشير إليها في الأصل يتم تحريرها بطريقة أو بأخرى.

هناك العديد من الطرق الممكنة لجعل مؤشر تتدلى. الطريقة الأكثر شيوعًا هي النسخة الجديدة والنسخ والحذف

int * p = NULL ؛ int * q = NULL؛

ع = س جديدة ؛

ف = ع ؛

حذف ف ؛ // تتم إزالة كل من q ومؤشر كتلة الذاكرة بواسطة q من الذاكرة

// من هنا لدينا مؤشر p له عنوان غير موجود في الذاكرة. إذا حاولنا تعيين بعض القيمة لهذا المؤشر ، فنحن في ورطة ، p هنا هو المؤشر المتدلي

* ع = 10 ؛ //يصطدم

من الطرق الأخرى التي يمكنك من خلالها إنشاء مؤشر التعلق بطريق الخطأ القيام بنسخة ضحلة من الكائن إما عن طريق التعيين أو عن طريق تمرير كائن إلى طريقة وبالتالي باستخدام مُنشئ نسخ مُقدم بواسطة برنامج التحويل البرمجي والذي يقوم أيضًا بنسخ نسخة ضحلة لك.


الاجابه 4:

أرى الكثير من "اللغة الإنجليزية" هنا ، والتي قد تكون مفيدة لشخص يعرف هذا المفهوم بالفعل ولكن بالنسبة لشخص لا يعرف ذلك ، لن تكون سوى نصوص رطانة. ومع ذلك فإن حاصل المتعة في الإجابات والاستعارات تدق ، الاعتذار إذا كان يهين أي شخص.

Null Pointer: مؤشر يحتوي على العنوان إلى لا شيء أو يقول موقع NULL. الكتابة على هذا الموقع خطأ. تم تصميم هذا لمنع المبرمجين من الكتابة بشكل عرضي على موقع الذاكرة مما قد يؤدي إلى حدوث خطأ تجزئة و / أو تعطل. كانت الفكرة دائمًا تهيئة مؤشر باستخدام NULL والتحقق من NULL قبل الكتابة. النظر في هذا السيناريو:

int * p؛ // الآن يحتوي هذا المؤشر على عنوان عشوائي ، ويمكن أن يشير إلى أي مكان ، حتى خارج المقطع

* ع = 10 ؛ // هذا بالتأكيد سوف يعطي خطأ.

الطريقة الآمنة ستكون مثل هذا:

int * p = NULL ؛

إذا (ص! = NULL)

* ع = 10 ؛

مؤشر التعلق: كما يوحي الاسم ، فإن المؤشر غير جاهز إلى حيث يجب الإشارة إلى أن كتلة الذاكرة التي كانت تشير إليها في الأصل يتم تحريرها بطريقة أو بأخرى.

هناك العديد من الطرق الممكنة لجعل مؤشر تتدلى. الطريقة الأكثر شيوعًا هي النسخة الجديدة والنسخ والحذف

int * p = NULL ؛ int * q = NULL؛

ع = س جديدة ؛

ف = ع ؛

حذف ف ؛ // تتم إزالة كل من q ومؤشر كتلة الذاكرة بواسطة q من الذاكرة

// من هنا لدينا مؤشر p له عنوان غير موجود في الذاكرة. إذا حاولنا تعيين بعض القيمة لهذا المؤشر ، فنحن في ورطة ، p هنا هو المؤشر المتدلي

* ع = 10 ؛ //يصطدم

من الطرق الأخرى التي يمكنك من خلالها إنشاء مؤشر التعلق بطريق الخطأ القيام بنسخة ضحلة من الكائن إما عن طريق التعيين أو عن طريق تمرير كائن إلى طريقة وبالتالي باستخدام مُنشئ نسخ مُقدم بواسطة برنامج التحويل البرمجي والذي يقوم أيضًا بنسخ نسخة ضحلة لك.


الاجابه 5:

أرى الكثير من "اللغة الإنجليزية" هنا ، والتي قد تكون مفيدة لشخص يعرف هذا المفهوم بالفعل ولكن بالنسبة لشخص لا يعرف ذلك ، لن تكون سوى نصوص رطانة. ومع ذلك فإن حاصل المتعة في الإجابات والاستعارات تدق ، الاعتذار إذا كان يهين أي شخص.

Null Pointer: مؤشر يحتوي على العنوان إلى لا شيء أو يقول موقع NULL. الكتابة على هذا الموقع خطأ. تم تصميم هذا لمنع المبرمجين من الكتابة بشكل عرضي على موقع الذاكرة مما قد يؤدي إلى حدوث خطأ تجزئة و / أو تعطل. كانت الفكرة دائمًا تهيئة مؤشر باستخدام NULL والتحقق من NULL قبل الكتابة. النظر في هذا السيناريو:

int * p؛ // الآن يحتوي هذا المؤشر على عنوان عشوائي ، ويمكن أن يشير إلى أي مكان ، حتى خارج المقطع

* ع = 10 ؛ // هذا بالتأكيد سوف يعطي خطأ.

الطريقة الآمنة ستكون مثل هذا:

int * p = NULL ؛

إذا (ص! = NULL)

* ع = 10 ؛

مؤشر التعلق: كما يوحي الاسم ، فإن المؤشر غير جاهز إلى حيث يجب الإشارة إلى أن كتلة الذاكرة التي كانت تشير إليها في الأصل يتم تحريرها بطريقة أو بأخرى.

هناك العديد من الطرق الممكنة لجعل مؤشر تتدلى. الطريقة الأكثر شيوعًا هي النسخة الجديدة والنسخ والحذف

int * p = NULL ؛ int * q = NULL؛

ع = س جديدة ؛

ف = ع ؛

حذف ف ؛ // تتم إزالة كل من q ومؤشر كتلة الذاكرة بواسطة q من الذاكرة

// من هنا لدينا مؤشر p له عنوان غير موجود في الذاكرة. إذا حاولنا تعيين بعض القيمة لهذا المؤشر ، فنحن في ورطة ، p هنا هو المؤشر المتدلي

* ع = 10 ؛ //يصطدم

من الطرق الأخرى التي يمكنك من خلالها إنشاء مؤشر التعلق بطريق الخطأ القيام بنسخة ضحلة من الكائن إما عن طريق التعيين أو عن طريق تمرير كائن إلى طريقة وبالتالي باستخدام مُنشئ نسخ مُقدم بواسطة برنامج التحويل البرمجي والذي يقوم أيضًا بنسخ نسخة ضحلة لك.


الاجابه 6:

أرى الكثير من "اللغة الإنجليزية" هنا ، والتي قد تكون مفيدة لشخص يعرف هذا المفهوم بالفعل ولكن بالنسبة لشخص لا يعرف ذلك ، لن تكون سوى نصوص رطانة. ومع ذلك فإن حاصل المتعة في الإجابات والاستعارات تدق ، الاعتذار إذا كان يهين أي شخص.

Null Pointer: مؤشر يحتوي على العنوان إلى لا شيء أو يقول موقع NULL. الكتابة على هذا الموقع خطأ. تم تصميم هذا لمنع المبرمجين من الكتابة بشكل عرضي على موقع الذاكرة مما قد يؤدي إلى حدوث خطأ تجزئة و / أو تعطل. كانت الفكرة دائمًا تهيئة مؤشر باستخدام NULL والتحقق من NULL قبل الكتابة. النظر في هذا السيناريو:

int * p؛ // الآن يحتوي هذا المؤشر على عنوان عشوائي ، ويمكن أن يشير إلى أي مكان ، حتى خارج المقطع

* ع = 10 ؛ // هذا بالتأكيد سوف يعطي خطأ.

الطريقة الآمنة ستكون مثل هذا:

int * p = NULL ؛

إذا (ص! = NULL)

* ع = 10 ؛

مؤشر التعلق: كما يوحي الاسم ، فإن المؤشر غير جاهز إلى حيث يجب الإشارة إلى أن كتلة الذاكرة التي كانت تشير إليها في الأصل يتم تحريرها بطريقة أو بأخرى.

هناك العديد من الطرق الممكنة لجعل مؤشر تتدلى. الطريقة الأكثر شيوعًا هي النسخة الجديدة والنسخ والحذف

int * p = NULL ؛ int * q = NULL؛

ع = س جديدة ؛

ف = ع ؛

حذف ف ؛ // تتم إزالة كل من q ومؤشر كتلة الذاكرة بواسطة q من الذاكرة

// من هنا لدينا مؤشر p له عنوان غير موجود في الذاكرة. إذا حاولنا تعيين بعض القيمة لهذا المؤشر ، فنحن في ورطة ، p هنا هو المؤشر المتدلي

* ع = 10 ؛ //يصطدم

من الطرق الأخرى التي يمكنك من خلالها إنشاء مؤشر التعلق بطريق الخطأ القيام بنسخة ضحلة من الكائن إما عن طريق التعيين أو عن طريق تمرير كائن إلى طريقة وبالتالي باستخدام مُنشئ نسخ مُقدم بواسطة برنامج التحويل البرمجي والذي يقوم أيضًا بنسخ نسخة ضحلة لك.


الاجابه 7:

أرى الكثير من "اللغة الإنجليزية" هنا ، والتي قد تكون مفيدة لشخص يعرف هذا المفهوم بالفعل ولكن بالنسبة لشخص لا يعرف ذلك ، لن تكون سوى نصوص رطانة. ومع ذلك فإن حاصل المتعة في الإجابات والاستعارات تدق ، الاعتذار إذا كان يهين أي شخص.

Null Pointer: مؤشر يحتوي على العنوان إلى لا شيء أو يقول موقع NULL. الكتابة على هذا الموقع خطأ. تم تصميم هذا لمنع المبرمجين من الكتابة بشكل عرضي على موقع الذاكرة مما قد يؤدي إلى حدوث خطأ تجزئة و / أو تعطل. كانت الفكرة دائمًا تهيئة مؤشر باستخدام NULL والتحقق من NULL قبل الكتابة. النظر في هذا السيناريو:

int * p؛ // الآن يحتوي هذا المؤشر على عنوان عشوائي ، ويمكن أن يشير إلى أي مكان ، حتى خارج المقطع

* ع = 10 ؛ // هذا بالتأكيد سوف يعطي خطأ.

الطريقة الآمنة ستكون مثل هذا:

int * p = NULL ؛

إذا (ص! = NULL)

* ع = 10 ؛

مؤشر التعلق: كما يوحي الاسم ، فإن المؤشر غير جاهز إلى حيث يجب الإشارة إلى أن كتلة الذاكرة التي كانت تشير إليها في الأصل يتم تحريرها بطريقة أو بأخرى.

هناك العديد من الطرق الممكنة لجعل مؤشر تتدلى. الطريقة الأكثر شيوعًا هي النسخة الجديدة والنسخ والحذف

int * p = NULL ؛ int * q = NULL؛

ع = س جديدة ؛

ف = ع ؛

حذف ف ؛ // تتم إزالة كل من q ومؤشر كتلة الذاكرة بواسطة q من الذاكرة

// من هنا لدينا مؤشر p له عنوان غير موجود في الذاكرة. إذا حاولنا تعيين بعض القيمة لهذا المؤشر ، فنحن في ورطة ، p هنا هو المؤشر المتدلي

* ع = 10 ؛ //يصطدم

من الطرق الأخرى التي يمكنك من خلالها إنشاء مؤشر التعلق بطريق الخطأ القيام بنسخة ضحلة من الكائن إما عن طريق التعيين أو عن طريق تمرير كائن إلى طريقة وبالتالي باستخدام مُنشئ نسخ مُقدم بواسطة برنامج التحويل البرمجي والذي يقوم أيضًا بنسخ نسخة ضحلة لك.


الاجابه 8:

أرى الكثير من "اللغة الإنجليزية" هنا ، والتي قد تكون مفيدة لشخص يعرف هذا المفهوم بالفعل ولكن بالنسبة لشخص لا يعرف ذلك ، لن تكون سوى نصوص رطانة. ومع ذلك فإن حاصل المتعة في الإجابات والاستعارات تدق ، الاعتذار إذا كان يهين أي شخص.

Null Pointer: مؤشر يحتوي على العنوان إلى لا شيء أو يقول موقع NULL. الكتابة على هذا الموقع خطأ. تم تصميم هذا لمنع المبرمجين من الكتابة بشكل عرضي على موقع الذاكرة مما قد يؤدي إلى حدوث خطأ تجزئة و / أو تعطل. كانت الفكرة دائمًا تهيئة مؤشر باستخدام NULL والتحقق من NULL قبل الكتابة. النظر في هذا السيناريو:

int * p؛ // الآن يحتوي هذا المؤشر على عنوان عشوائي ، ويمكن أن يشير إلى أي مكان ، حتى خارج المقطع

* ع = 10 ؛ // هذا بالتأكيد سوف يعطي خطأ.

الطريقة الآمنة ستكون مثل هذا:

int * p = NULL ؛

إذا (ص! = NULL)

* ع = 10 ؛

مؤشر التعلق: كما يوحي الاسم ، فإن المؤشر غير جاهز إلى حيث يجب الإشارة إلى أن كتلة الذاكرة التي كانت تشير إليها في الأصل يتم تحريرها بطريقة أو بأخرى.

هناك العديد من الطرق الممكنة لجعل مؤشر تتدلى. الطريقة الأكثر شيوعًا هي النسخة الجديدة والنسخ والحذف

int * p = NULL ؛ int * q = NULL؛

ع = س جديدة ؛

ف = ع ؛

حذف ف ؛ // تتم إزالة كل من q ومؤشر كتلة الذاكرة بواسطة q من الذاكرة

// من هنا لدينا مؤشر p له عنوان غير موجود في الذاكرة. إذا حاولنا تعيين بعض القيمة لهذا المؤشر ، فنحن في ورطة ، p هنا هو المؤشر المتدلي

* ع = 10 ؛ //يصطدم

من الطرق الأخرى التي يمكنك من خلالها إنشاء مؤشر التعلق بطريق الخطأ القيام بنسخة ضحلة من الكائن إما عن طريق التعيين أو عن طريق تمرير كائن إلى طريقة وبالتالي باستخدام مُنشئ نسخ مُقدم بواسطة برنامج التحويل البرمجي والذي يقوم أيضًا بنسخ نسخة ضحلة لك.


الاجابه 9:

أرى الكثير من "اللغة الإنجليزية" هنا ، والتي قد تكون مفيدة لشخص يعرف هذا المفهوم بالفعل ولكن بالنسبة لشخص لا يعرف ذلك ، لن تكون سوى نصوص رطانة. ومع ذلك فإن حاصل المتعة في الإجابات والاستعارات تدق ، الاعتذار إذا كان يهين أي شخص.

Null Pointer: مؤشر يحتوي على العنوان إلى لا شيء أو يقول موقع NULL. الكتابة على هذا الموقع خطأ. تم تصميم هذا لمنع المبرمجين من الكتابة بشكل عرضي على موقع الذاكرة مما قد يؤدي إلى حدوث خطأ تجزئة و / أو تعطل. كانت الفكرة دائمًا تهيئة مؤشر باستخدام NULL والتحقق من NULL قبل الكتابة. النظر في هذا السيناريو:

int * p؛ // الآن يحتوي هذا المؤشر على عنوان عشوائي ، ويمكن أن يشير إلى أي مكان ، حتى خارج المقطع

* ع = 10 ؛ // هذا بالتأكيد سوف يعطي خطأ.

الطريقة الآمنة ستكون مثل هذا:

int * p = NULL ؛

إذا (ص! = NULL)

* ع = 10 ؛

مؤشر التعلق: كما يوحي الاسم ، فإن المؤشر غير جاهز إلى حيث يجب الإشارة إلى أن كتلة الذاكرة التي كانت تشير إليها في الأصل يتم تحريرها بطريقة أو بأخرى.

هناك العديد من الطرق الممكنة لجعل مؤشر تتدلى. الطريقة الأكثر شيوعًا هي النسخة الجديدة والنسخ والحذف

int * p = NULL ؛ int * q = NULL؛

ع = س جديدة ؛

ف = ع ؛

حذف ف ؛ // تتم إزالة كل من q ومؤشر كتلة الذاكرة بواسطة q من الذاكرة

// من هنا لدينا مؤشر p له عنوان غير موجود في الذاكرة. إذا حاولنا تعيين بعض القيمة لهذا المؤشر ، فنحن في ورطة ، p هنا هو المؤشر المتدلي

* ع = 10 ؛ //يصطدم

من الطرق الأخرى التي يمكنك من خلالها إنشاء مؤشر التعلق بطريق الخطأ القيام بنسخة ضحلة من الكائن إما عن طريق التعيين أو عن طريق تمرير كائن إلى طريقة وبالتالي باستخدام مُنشئ نسخ مُقدم بواسطة برنامج التحويل البرمجي والذي يقوم أيضًا بنسخ نسخة ضحلة لك.


الاجابه 10:

أرى الكثير من "اللغة الإنجليزية" هنا ، والتي قد تكون مفيدة لشخص يعرف هذا المفهوم بالفعل ولكن بالنسبة لشخص لا يعرف ذلك ، لن تكون سوى نصوص رطانة. ومع ذلك فإن حاصل المتعة في الإجابات والاستعارات تدق ، الاعتذار إذا كان يهين أي شخص.

Null Pointer: مؤشر يحتوي على العنوان إلى لا شيء أو يقول موقع NULL. الكتابة على هذا الموقع خطأ. تم تصميم هذا لمنع المبرمجين من الكتابة بشكل عرضي على موقع الذاكرة مما قد يؤدي إلى حدوث خطأ تجزئة و / أو تعطل. كانت الفكرة دائمًا تهيئة مؤشر باستخدام NULL والتحقق من NULL قبل الكتابة. النظر في هذا السيناريو:

int * p؛ // الآن يحتوي هذا المؤشر على عنوان عشوائي ، ويمكن أن يشير إلى أي مكان ، حتى خارج المقطع

* ع = 10 ؛ // هذا بالتأكيد سوف يعطي خطأ.

الطريقة الآمنة ستكون مثل هذا:

int * p = NULL ؛

إذا (ص! = NULL)

* ع = 10 ؛

مؤشر التعلق: كما يوحي الاسم ، فإن المؤشر غير جاهز إلى حيث يجب الإشارة إلى أن كتلة الذاكرة التي كانت تشير إليها في الأصل يتم تحريرها بطريقة أو بأخرى.

هناك العديد من الطرق الممكنة لجعل مؤشر تتدلى. الطريقة الأكثر شيوعًا هي النسخة الجديدة والنسخ والحذف

int * p = NULL ؛ int * q = NULL؛

ع = س جديدة ؛

ف = ع ؛

حذف ف ؛ // تتم إزالة كل من q ومؤشر كتلة الذاكرة بواسطة q من الذاكرة

// من هنا لدينا مؤشر p له عنوان غير موجود في الذاكرة. إذا حاولنا تعيين بعض القيمة لهذا المؤشر ، فنحن في ورطة ، p هنا هو المؤشر المتدلي

* ع = 10 ؛ //يصطدم

من الطرق الأخرى التي يمكنك من خلالها إنشاء مؤشر التعلق بطريق الخطأ القيام بنسخة ضحلة من الكائن إما عن طريق التعيين أو عن طريق تمرير كائن إلى طريقة وبالتالي باستخدام مُنشئ نسخ مُقدم بواسطة برنامج التحويل البرمجي والذي يقوم أيضًا بنسخ نسخة ضحلة لك.