بيت التمويل الشخصي المصفوفات والمؤشرات في C ++ - الدمى

المصفوفات والمؤشرات في C ++ - الدمى

فيديو: [ أصول البرمجة ] 7- المؤشرات و المصفوفات ( Pointers & Arrays ) 2025

فيديو: [ أصول البرمجة ] 7- المؤشرات و المصفوفات ( Pointers & Arrays ) 2025
Anonim

اسم المصفوفة هو مؤشر إلى الصفيف نفسه. صفيف عبارة عن سلسلة من المتغيرات المخزنة في الذاكرة. يشير اسم الصفيف إلى العنصر الأول.

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

إنت أدوب (إنت نومبرس []) {

فكر في هذه الدالة الموجودة في المثال ARray01 و مين () التي تسميها:

فواد بروسيساراي (إنت نومبرس []) {{ كوت << "إنزيد فونكتيون: سيز إن بيتس إس" << سيليوف (نومبرس) << إندل؛} إنت مين (إنت أرجك، شار * أرجف []) {إنت مينومبرز [] = {1، 2، 3، 4، 5، 6، 7، 8، 9، 10}؛ كوت << "أوتسيد فونكتيون: سيز إن بيتس إس"؛ كوت << سيجيوف (مينومبرز) << إندل؛ ProcessArray (MyNumbers)؛ ريتورن 0؛}

عند تشغيل هذا التطبيق، وهنا ما تراه:

وظيفة خارجية: حجم بايت هو 40 داخل وظيفة: حجم في بايت هو 4

خارج وظيفة، رمز يعرف أن حجم المصفوفة هو 40 بايت. ولكن لماذا تعتقد التعليمات البرمجية أن حجم 4 بعد ذلك هو داخل الصفيف؟ والسبب هو أنه على الرغم من أنه يبدو أنك تمر مصفوفة، فأنت تمر حقا مؤشر إلى صفيف. حجم المؤشر هو 4 فقط، وهذا هو ما يطبع خط كوت النهائي.

تحتوي صفائف الإعلان على خصوصية بسيطة. عندما تعلن مصفوفة من خلال إعطاء عدد محدد من العناصر، مثل

إنت مينومبرز [5]؛

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

فواد بروسيساراي (إن نومبرس []) {

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

فواد بروسيساراي (إنت * نومبرس) {

وهكذا، داخل الدالات التي يعلنها أي سطر، السطرين التاليين من التعليمات البرمجية ما يعادلها <: نومبرس [3] = 10؛ * (نومبرس + 3) = 10؛

هذا التكافؤ يعني أنه إذا كنت تستخدم إعلان خارجي على مصفوفة، مثل

إكسترن إك إنت مينومبرز []؛

ومن ثم أخذ حجم هذه المصفوفة، وسوف مترجم الحصول على الخلط. في ما يلي مثال: إذا كان لديك ملفان، أرقام. كبب والرئيسي. كبب، حيث الأرقام. كبب يعلن مصفوفة والرئيسية. كبب خارجيا يعلن أنه (كما هو موضح في المثال أراي 02)، سوف تحصل على خطأ برنامج التحويل البرمجي إذا قمت بالاتصال سيزوف:

# تضمين باستخدام نامسباس ستد؛ إكسترن إنت مينومبرز []؛ إنت مين (إنت أرجك، شار * أرجف []) {كوت << سيزوف (مينومبرز) << إندل؛ ريتورن 0؛}

في التعليمات البرمجية:: كتل، يعطينا المجمع غك هذا الخطأ:

خطأ: تطبيق غير صحيح من 'سيزوف' لنوع غير مكتمل 'إنت []'

الحل هو وضع الحجم من الصفيف داخل الأقواس.فقط تأكد من أن حجم هو نفسه كما هو الحال في ملف التعليمات البرمجية المصدر الآخر! يمكنك مزيفة المجمع من خلال تغيير الرقم، و

لن تحصل على خطأ . ولكن هذا هو أسلوب البرمجة سيئة ومطالبة الأخطاء. على الرغم من أن

صفيف هو مجرد سلسلة من المتغيرات المتاخمة لبعضها البعض في الذاكرة، فإن اسم من المصفوفة هو في الحقيقة مؤشر على العنصر الأول في المصفوفة. يمكنك استخدام الاسم كمؤشر. ومع ذلك، تفعل ذلك فقط عندما كنت حقا بحاجة للعمل مع مؤشر. بعد كل شيء، لديك حقا أي سبب لكتابة التعليمات البرمجية التي هي خفي، مثل * (أرقام + 3) = 10؛. العكس صحيح أيضا. انظر إلى هذه الوظيفة:

فواد بروسيساراي (إنت * نومبرس) {كوت << نومبرس [1] << إندل؛}

تأخذ هذه الدالة مؤشر كمعلمة، ولكن يمكنك الوصول إليها كمصفوفة. مرة أخرى، لا تكتب رمز مثل هذا؛ بدلا من ذلك، يجب أن تفهم

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

إنت لوتسونومبرز [50]؛ إنت x؛ لوتسونومبرز = & x؛

أشر إلى لوتسونومبرز

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

هذا الخطأ يعني أن مترجم لا يرى تمييز واضح بين النوعين، إنت * و إنت []. ومع ذلك، اسم مجموعة هو في الواقع مؤشر، ويمكنك استخدامه بمثابة واحد. أنت فقط لا تستطيع أن تفعل كل شيء مع أنه يمكنك مع مؤشر عادي، مثل إعادة تعيين ذلك.

عند استخدام المصفوفات، ثم، لاحظ النصائح التالية. سوف تساعدك هذه على الحفاظ على صفائف خالية من الأخطاء الخاصة بك:

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

  • حافظ على التعليمات البرمجية الخاصة بك واضحة ومفهومة. إذا كنت تمر مؤشرات، لا بأس أن تأخذ عنوان العنصر الأول، كما في & (مينومبرز [0]) إذا كان هذا يجعل التعليمات البرمجية أكثر وضوحا - على الرغم من أنه يعادل فقط مينومبرز.

  • عندما تعلن مصفوفة، حاول دائما وضع رقم داخل الأقواس، إلا إذا كنت تكتب دالة تأخذ مصفوفة.

  • عند استخدام الكلمة الخارجية إكسترن لتعلن مصفوفة، المضي قدما ووضع أيضا حجم صفيف داخل الأقواس. ولكن تكون متسقة! لا تستخدم رقم واحد مرة واحدة ورقم مختلف مرة أخرى. أسهل طريقة لتكون متسقة هي استخدام ثابت، مثل كونست إنت أريسيزي = 10؛ في ملف رأس مشترك ثم استخدم ذلك في تعريف صفيف: إنت مياراي [أريسيزي]؛.

المصفوفات والمؤشرات في C ++ - الدمى

اختيار المحرر

القسم المفضل في صفحة إعدادات الموقع من شاريبوانت - الدمى

القسم المفضل في صفحة إعدادات الموقع من شاريبوانت - الدمى

يمكنك الدخول إلى قسم "المظهر والمظهر" من صفحة إعدادات الموقع في موقع شاريبوانت 2010 من قائمة إجراءات الموقع. يجب أن يكون لديك إذن مصمم أو مالك لتغيير أي من هذه العناصر. يحتوي القسم لوك أند فيل على العنوان والوصف والأيقونة: يسمح لك هذا الخيار بتغيير عنوان ...

مشاركة المعلومات مع المدونات و شاريبوانت 2010 - الدمى

مشاركة المعلومات مع المدونات و شاريبوانت 2010 - الدمى

لإنشاء مدونة في شاريبوانت، يمكنك إنشاء موقع جديد / فرعي. خصص بعض الوقت للنظر في مكان وجود هذه المدونة في التسلسل الهرمي لموقعك. والمقصود من المدونات أن تكون أساسا في اتجاه واحد الاتصالات: فرد أو مجموعة مع رأي أو خبرة يخلق المشاركات التي الآخرين قراءة والاشتراك في. منح، يمكن للقراء التعليق ...

مشاركة المعلومات مع ويكيس و شاريبوانت 2010 - الدمى

مشاركة المعلومات مع ويكيس و شاريبوانت 2010 - الدمى

أحد التوجهات التسويقية لشاريبوانت 2010 هو الويكي في كل مكان. موقع فريق شاريبوانت 2010 هو في الأساس ويكي مع قدرات لإضافة المكتبات والقوائم. يتضمن شاريبوانت 2010 نموذج موقع جديد يسمى ويكي إنتيربريس والذي يهدف إلى إنشاء محتوى تعاوني بين مجموعات أكبر من الناس، مثل التقسيم. ...

اختيار المحرر

كيفية التعامل مع عملات متعددة في قراء 2013 - الدمى

كيفية التعامل مع عملات متعددة في قراء 2013 - الدمى

كويكبوكس 2013 يدعم عملات متعددة. لتشغيل ميزة العملات المتعددة "كويكبوكس"، اختر الأمر إديت ← بريفيرنسز، وحدد الخيار مولتيبل كيرنسيز من مربع القائمة، ثم انقر فوق علامة التبويب تفضيلات الشركة. ثم حدد الزر نعم استخدم أكثر من عملة واحدة، واختر العملة الرئيسية من مربع القائمة المنسدلة. بعد أن تقول ...

كيفية التعامل مع عملات متعددة في كويكبوكس 2014 - دمى

كيفية التعامل مع عملات متعددة في كويكبوكس 2014 - دمى

كويكبوكس يدعم عملات متعددة. لتشغيل ميزة عملات كويكبوكس المتعددة، اختر الأمر إديت ← بريفيرنسز، وحدد الخيار مولتيبل كيرنسيز في مربع القائمة، ثم انقر على علامة التبويب تفضيلات الشركة. ثم حدد الزر نعم استخدم أكثر من عملة واحدة، واختر العملة الرئيسية من القائمة المنسدلة. بعد أن تقول قراء أن ...

كيفية تخصيص مصنف بدء التشغيل السريع - الدمى

كيفية تخصيص مصنف بدء التشغيل السريع - الدمى

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

اختيار المحرر

كيفية تسجيل إيصال مبيعات باستخدام كويكبوكس 2010 - دمى

كيفية تسجيل إيصال مبيعات باستخدام كويكبوكس 2010 - دمى

يسمح لك كويكبوكس 2010 بإنشاء مبيعات استلام عندما يشتري العميل عنصر دون الحاجة إلى فاتورة. يبدو أن إيصال المبيعات يشبه إلى حد كبير الفاتورة. ومع ذلك، فإنه لا يتضمن معلومات الشحن (لأن هذا غير ذي صلة)، ويتيح لك تسجيل المبلغ الذي يدفعه العميل.

كيفية تسجيل رصيد مورد في كويكبوكس أونلين - دوميز

كيفية تسجيل رصيد مورد في كويكبوكس أونلين - دوميز

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

كيفية تسجيل إيصال مبيعات في كويكبوكس 2014 - دمى

كيفية تسجيل إيصال مبيعات في كويكبوكس 2014 - دمى

لإرسال فاتورة للعميل في كويكبوكس انشاء الفواتير. لتسجيل حقيقة أن كنت قد بعت العميل بعض البند - ويفترض لأن العميل في وقت واحد يشتري ويدفع لهذا البند أو الخدمة - لا فاتورة العميل. بدلا من ذلك، يمكنك إنشاء إيصال المبيعات. يبدو أن إيصال البيع يبدو متشابه جدا مع ...