-
برنامه مشكلي نداره شايد از اين header به اين شكل استفاده ميكنيد :
کد:
#include <iostream.h>
using namespace std;
كه شكل صحيحش اينه:
کد:
#include <iostream>
using namespace std;
ببينيد به طورخيلي ساده اين دو كد با هم فرقي ندارند(گرچه در واقع اين طور نيست)
کد:
char ch[][];
char *ch[];
كه هر دو dynamic array هستند.
باز به طور ساده تر اين دو كد با هم برابر هستند:
کد:
char *ch = "Test";
char ch[] = "Test";
اميدوارم متوجه منظورم شده باشيد.
يك اشاره گر يا pointer يا * Operator به يك آدرس در حافظه اشاره ميكند كه حتما بايد مقدار اوليه داشته باشه
حداقل اينكه مقدارش بايد null باشه مگر در آرگومان يك تابع. وقتي از malloc استفاده ميكنيد در حقيقت
خودتون memory management رو به عهده ميگيرد و باعث ميشه كه OS يا سيستم عامل يك بلوك از حافظه به مقدار مورد نياز شما در اختيار شما قرار بده.اين فضا در Heap ايجاد ميشه نه Stack.
در ضمن ميشه يك pointer رو با malloc مقدار دهي كرد مثل كد زير:
کد:
char *ch;
ch = malloc(BUFFERSIZE);
البته بايد چك كرد كه آيا فضاي خواسته شده به ch داده شده يا نه و بعد از استفاده بايد
حافظه ي ايجاد شده رو آزاد كرد:
اينها مفاهيم مهمي هستند و حقيقتا زياد ساده هم نيستند براي يادگيريشون زياد عجله نكنيد.
به نظرم شما زيادي عجله داريد كه برنامه نويسي رو ياد بگيريد.باز هم ميگم زياد عجله نكنيد چون اين مفاهيم بسيار مهم هستند و در برنامه هاي كوچيك خودشون رو نشون نميدن.
-
گفتین بگم دوست
دوست سی من یه سوال جدا از از این سوال قبلیم اومد نخواستم دیگه تاپیک جدید بزنم این چطوریه که شما انگار برای چاپ در خروجی stdout انگار از این توابع این کاره استفاده نمیک نی نمی دونم می نویسی
"بسشبب" >> count
نفهمیدم زیاد چیه این چه روش چطوری باهاش کار می کنن ؟؟
-
دقیقاً منظورتون رو متوجه نشدم چون خیلی اشتباه تایپی داشتین !
Stdout همون Standard Output هست یعنی مانیتور.
دستور cout برای نمایش متغیر ها و ثوابت در ++C بکار میره.
کد:
cout<<"string";
cout<<10;
cout<< my_var;
-
پاسخ Admiral كامل هست من فقط اضافه كنم اگه يادتون باشه وقتي از printf استفاده ميكرديد
در آرگومان اول مشخص ميكرديد كه نوع خروجي شما چيه.
مثل كد زير:
کد:
printf("%d",i_int);
printf("%c",c_char);
printf("%s",s_String);
.
.
.
در اينجا لازم نيست نوع داده خودتون رو تعريف كنيد وهمونطور كه Admiral گفتند به اين شكل استفاده ميشه :
کد:
cout << "String";
cout << string type;
cout << integer Type;
cout << character Type;
.
.
.
همچنين با اضافه كردن >> ميتونيد چند نوع مختلف رو در خروجي نشون بديد.مثلا:
کد:
int i = 10;
char *ch = "Test!";
cout << "Test" << i << ch <<"\n" ;
-
سلام بچه ها اميدوارم حالتون خوب باشه
من دانشجوي كامپيوتر هستم و استادمون يه سوال گفته كه من نوشتم و يه مشكل كوچيك و لي در حقيقت بزرگ دارم
استاد گفته يه برنامه اي بنويسيد با ++c كه دو تا عدد صد رقمي رو با هم ضرب كنه و من هم نوشتم فقط در موقع گرفتن عدد كه صد رقمي باشه هيچ متغيري ضرفيت اينو نداره واسه همين خواستم با آرايه تك تك عدد رو بگيرم و واسه همين از تابع Getch() استفاده كردم و متا سفانه خروجي كه مي ده كاراكتره و نمي شه اون رو ضرب يا تقسيم كرد واسه همين مي خواستم ببينم كسي هست بدونه كه تو سي چه تابعي است كه مي تونه كاراكتر رو سريع از صفحه كليد بگيره و به عدد تبديل كنه
ممنون
-
اون کاراکتری که برگدونده مبشه کد اسکی اون رقم هست. چون کدهای اسکی ارقام پشت سر هم هستن :
مثلاً (0 کد اسکیش 30. 1 کدش 31 و ... ) این مقادیر رو منهای 30 کن:
کد:
c = getch();
int n = c - 30;
توی c این دستور: '0' خودش کد اسکی 0 برمی پردونه و نیازی نیس که این شماره ها رو حفظ باشی
کد:
c=getch();
int n = c - '0';
جدول کدهای ascii
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
-
دمت گرم حميدرضا ممنون از لطفت