الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الدالة تطبع كل الstring

مغلق
بدأه m4design في 5 ديسمبر 2007 · 3 رد · 834 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا توقعت البرنامج لن يعمل لأني أرسل string كامل لمتغير يأخذ حرف واحد ومع هذا فالدالة تطبع كل الـstring !!

#include <iostream>

using namespace std;

void printstr(char str[1])
{
	cout << str;
}

int main()
{
	printstr("Hello you\n");

	getchar();
}

البرنامج يطبع

Hello you

تم تعديل هذه المشاركة بواسطة m4design في 5 ديسمبر 2007 في 23:21

#2

السلام عليكم ,,

لا توجد مشكلة في برنامجك,, و لكن الكود قد يصعب فهمه قليلاُ ,,

في الدالة printstr التي نمرر لها str و هو مصفوفة حرفية و ليس حرفاُ واحداُ ,, و المترجم لن يهتم للرقم الموجود بين الأقواس ,,

أما إذا أردنا تمرير حرف واحد فيكون كالتالي ,,

void printstr(char str)
{
	cout << str;
}

أما السؤال الذي قد يطرح نفسه ,, ما فائدة الرقم واحد في الكود التالي :

void printstr(char str[1]);

فيمكن القول أن لا فائدة لها,, لأن المصفوفات في ++C عبارة عن عناصر متجاورة , و لا تحتوي على معلومات كعدد العناصر و غيره ,, بل يجب تمرير أي معلومة عن المصفوفة في متغير آخر,,

طبعاُ المصفوفات الحرفية هي حالة خاصة ,, حيث يكون آخر عنصر فيها هو

'\0' = 0 = NULL

وبالتالي يمكن معرفة نهاية المصفوفة دون معرفة عدد العناصر ,,

تحياتي ,,

#3

مع احترامى لكلامك هوة صح و كل حاجة

بس فعلا البرنامج دة فى غلطة

هوة هايشتغل عادى و كل حاجة بس الغلطة لو ان ال memory كلها full

هيشتغل غلط

لا اله الا الله .......................................... محمد رسول الله

#4

ممكن توضح لنا كيف تصير الــ Memory مليانة أو Full -_-

لما تصير الـ Memory مليانة في Exception راح يطلع لنا في الموضوع,,

هذا الموضوع مغلق.

مواضيع مشابهة