1. بما أن ال pointer هو فقط رمز أو عنوان يميز المتغيرات في الرام, فما فائده أسماء المتغيرات. فهي أيضا تقوم بنفس الوظيفة. و اللغه لا تسمح بتكرار تلك الاسماء. فما فائده ال pointers هنا.
2. ال pointer يحمل رقم hexa يشير لمكان ما أو رقم خانة (بايت) في الذاكرة. فمثلا لو 0x63dfaa380004 فهو يشير للبايت رقم 109812284653572 أي يشير لبايت واحد فقط. لكن المتغيرات من النوع int او short او غيره تخزن في أكثر من واحد بايت. فكيف يصل للقيمة رغم تأشيره علي بايت واحد من الأربعه أو الثمانيه.
3. في الكود التالي:
#include<stdio.h>#include<cs50.h>int main(void){
string s ="HI!, hello";// s[0]='H' s[1]='I' s[2]='!' s[3]='\0'
printf("size of s[0]: %lu\n",sizeof(s[0]));// char is stored 1 byte
printf("size of HI!: %lu\n",sizeof(s));// size of s should be 4 bytes. but why and how 8 bytes}
حجم ال s[0] واحد بايت. اليس من المفترض ان يكون حجم ال string اربعه بايت. الكود يخرج 8 دائما. جربته علي compiler اخر و اخرج 32 ايضا دائما.
السؤال
Abdelrehman Elsied
السلام عليكم. لدي بعض الأسئله بخصوص ال pointers:
1. بما أن ال pointer هو فقط رمز أو عنوان يميز المتغيرات في الرام, فما فائده أسماء المتغيرات. فهي أيضا تقوم بنفس الوظيفة. و اللغه لا تسمح بتكرار تلك الاسماء. فما فائده ال pointers هنا.
2. ال pointer يحمل رقم hexa يشير لمكان ما أو رقم خانة (بايت) في الذاكرة. فمثلا لو 0x63dfaa380004 فهو يشير للبايت رقم 109812284653572 أي يشير لبايت واحد فقط. لكن المتغيرات من النوع int او short او غيره تخزن في أكثر من واحد بايت. فكيف يصل للقيمة رغم تأشيره علي بايت واحد من الأربعه أو الثمانيه.
3. في الكود التالي:
حجم ال s[0] واحد بايت. اليس من المفترض ان يكون حجم ال string اربعه بايت. الكود يخرج 8 دائما. جربته علي compiler اخر و اخرج 32 ايضا دائما.
أرجو التوضيح لأنني لا أفهم. و شكرا علي مجهودكم.
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.