यहां हम मेमोरी आवंटन और संकलन प्रक्रियाओं पर कुछ एमसीक्यू प्रश्न देखेंगे।
प्रश्न 1 -निम्नलिखित कोड का आउटपुट क्या होगा -
#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); }
विकल्प -
- कचरा मूल्य
- 20.600000
- सिंटैक्स त्रुटि
- 20.6
स्पष्टीकरण
यूनियनों का उपयोग करके, हम कई प्रकार के डेटा को रखने के लिए एक ही मेमोरी लोकेशन का उपयोग कर सकते हैं। संघ के सभी सदस्य उसी मेमोरी लोकेशन का उपयोग करते हैं जिसमें अधिकतम स्थान होता है। यहां फ्लोट का प्रयोग किया जाता है, जिसमें 20.60f =20.600000 होता है। तो उत्तर B सही है।
प्रश्न 2 - संकलन प्रक्रिया का सही क्रम क्या है -
विकल्प -
- असेंबलर, कंपाइलर, प्रीप्रोसेसर, लिंकिंग
- कंपाइलर, असेंबलर, प्रीप्रोसेसर, लिंकिंग
- प्रीप्रोसेसर, कंपाइलर, असेंबलर, लिंकिंग
- असेंबलर, कंपाइलर, लिंकिंग, प्रीप्रोसेसर
स्पष्टीकरण -
विकल्प सी सही है, पहले यह कोड को प्रीप्रोसेस करता है, फिर इसे संकलित करता है, उसके बाद यह असेंबली स्तर कोड, या ऑब्जेक्ट कोड बनाता है, फिर लिंकिंग की जाती है।
प्रश्न 3 -निम्नलिखित में से कौन सा कथन सत्य है?
विकल्प -
- कोड को लिंक करने के दौरान #stdio.h द्वारा प्रतिस्थापित शामिल करें
- प्रीप्रोसेसिंग के दौरान कोड #include को stdio.h से बदल देता है
- निष्पादन के दौरान कोड #include को stdio.h से बदल देता है
- कोड को संपादित करने के दौरान #stdio.h द्वारा प्रतिस्थापित शामिल करें
स्पष्टीकरण -
विकल्प बी सही है। सबसे पहले, यह प्रीप्रोसेस्ड कोड बनाता है, उस चरण में, यह #include स्टेटमेंट में उल्लिखित फ़ाइल में मौजूद कोड को कोड में जोड़ता है और फिर कंपाइलर को भेजा जाता है।
प्रश्न 4 - fflush () फ़ंक्शन का उपयोग करने का उद्देश्य -
विकल्प -
- सभी स्ट्रीम और निर्दिष्ट स्ट्रीम फ्लश करने के लिए
- केवल निर्दिष्ट स्ट्रीम को फ्लश करने के लिए
- इनपुट-आउटपुट बफर फ्लश करने के लिए
- यह अमान्य लाइब्रेरी फ़ंक्शन है
स्पष्टीकरण -
इस फ़ंक्शन का उपयोग केवल आउटपुट स्ट्रीम को फ्लश करने के लिए किया जाता है। यह आउटपुट बफर को साफ़ करता है और आउटपुट को कंसोल पर भेजता है। विकल्प A सही है।
प्रश्न 5 -निम्नलिखित कोड की त्रुटि को इंगित करें -
#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); . में
- मुफ़्त में त्रुटि(ptr)
- कोई त्रुटि नहीं
स्पष्टीकरण -
विकल्प बी सही है। यहां यह बिना किसी कास्ट के पॉइंटर से पूर्णांक बनाता है