এখানে আমরা মেমরি অ্যালোকেশন এবং কম্পাইলেশন প্রসেসের ওপর কিছু MCQ প্রশ্ন দেখব।
প্রশ্ন ১ − নিচের কোডের আউটপুট কী হবে −
#include <stdio.h>
#include <stdlib.h>
int main() {
union my_union {
int i;
float f;
char c;
};
union my_union* u;
u = (union my_union*)malloc(sizeof(union my_union));
u->f = 20.60f;
printf("%f", u->f);
}
অপশন −
- Garbage Value
- 20.600000
- Syntax Error
- 20.6
ব্যাখ্যা
ইউনিয়ন (union) ব্যবহার করে আমরা একই মেমরি লোকেশন ব্যবহার করে একাধিক টাইপের ডেটা রাখতে পারি। ইউনিশনের সব মেম্বার একই মেমরি লোকেশন শেয়ার করে যেটির সর্বোচ্চ স্পেস থাকে। এখানে float ব্যবহৃত হয়েছে, যার 20.60f = 20.600000। তাই অপশন B সঠিক।
প্রশ্ন ২ − কম্পাইলেশন প্রসেসের সঠিক সিকোয়েন্স কী −
অপশন −
- Assembler, Compiler, Preprocessor, Linking
- Compiler, Assembler, Preprocessor, Linking
- Preprocessor, Compiler, Assembler, Linking
- Assembler, Compiler, Linking, Preprocessor
ব্যাখ্যা −
অপশন C সঠিক। প্রথমে কোডটি প্রিপ্রসেস করা হয়, তারপর কম্পাইল, তারপর অ্যাসেম্বলি লেভেল কোড বা অবজেক্ট কোড তৈরি হয়, এরপর লিংকিং হয়।
প্রশ্ন ৩ − নিচের কোন স্টেটমেন্টটি সঠিক?
অপশন −
- লিংকিং-এর সময় #include কোডটি stdio.h দিয়ে রিপ্লেস হয়
- প্রিপ্রসেসিং-এর সময় #include কোডটি stdio.h দিয়ে রিপ্লেস হয়
- এক্সিকিউশনের সময় #include কোডটি stdio.h দিয়ে রিপ্লেস হয়
- এডিটিং-এর সময় #include কোডটি stdio.h দিয়ে রিপ্লেস হয়
ব্যাখ্যা −
অপশন B সঠিক। প্রথমে প্রিপ্রসেসড কোড তৈরি হয়, সেই ফেজে #include স্টেটমেন্টে উল্লিখিত ফাইলের কোডগুলো আট্যাচ হয়ে কম্পাইলারে পাঠানো হয়।
প্রশ্ন ৪ − fflush() ফাংশন ব্যবহার করার উদ্দেশ্য −
অপশন −
- সব স্ট্রিম এবং নির্দিষ্ট স্ট্রিম ফ্লাশ করতে
- শুধু নির্দিষ্ট স্ট্রিম ফ্লাশ করতে
- ইনপুট-আউটপুট বাফার ফ্লাশ করতে
- এটি অবৈধ লাইব্রেরি ফাংশন
ব্যাখ্যা −
এই ফাংশনটি আউটপুট স্ট্রিম ফ্লাশ করতে ব্যবহৃত হয়। এটি আউটপুট বাফার ক্লিয়ার করে আউটপুট কনসোলে পাঠায়। অপশন A সঠিক।
প্রশ্ন ৫ − নিচের কোডের এরর পয়েন্ট আউট করুন −
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char* ptr;
*ptr = (int*)malloc(30);
strcpy(ptr, "ABC");
printf("%s", ptr);
free(ptr);
}
অপশন −
- strcpy() স্টেটমেন্টে এরর
- *ptr = (int*)malloc(30);-এ এরর
- free(ptr)-এ এরর
- No Error
ব্যাখ্যা −
অপশন B সঠিক। এখানে পয়েন্টার থেকে ইন্টিজার বানানো হয়েছে কাস্ট ছাড়া।