-
C भाषा में सरणी का प्री-इन्क्रीमेंट और पोस्ट-इन्क्रीमेंट
इन्क्रीमेंट ऑपरेटर्स ऑपरेटरनामव्यवहारसमतुल्य ++aप्री-इन्क्रीमेंटपहले बढ़ाएं, फिर मान उपयोग करेंa = a + 1; use a; a++पोस्ट-इन्क्रीमेंटपहले मान उपयोग करें, फिर बढ़ाएंuse a; a = a + 1; सरणी तत्वों के साथ int arr[5] = {1, 2, 3, 25, 7}; a = ++arr[1]; // arr[1] पहले 2→3 होता है, फिर a = 3 b = arr[1
-
C भाषा में डायनामिक मेमोरी आवंटन का उदाहरण
समस्या उपयोगकर्ता द्वारा दर्ज n संख्याओं का योग डायनामिक मेमोरी आवंटन से ज्ञात करना। फंक्शन्स अवलोकन malloc() - बाइट्स में ब्लॉक आवंटित calloc() - सन्निहित शून्य-प्रारंभिकृत ब्लॉक realloc() - आकार बढ़ाएं/घटाएं free() - मेमोरी मुक्त करें पूर्ण प्रोग्राम: योग और free() प्रदर्शन #include <stdio
-
C भाषा में डायनामिक मेमोरी आवंटन से सम और विषम संख्याएँ ढूंढना
समस्या डायनामिक मेमोरी आवंटन का उपयोग करके संख्याओं के सेट में सम और विषम संख्याओं का योग ज्ञात करना। एल्गोरिदम उपयोगकर्ता से तत्वों की संख्या n लें malloc(n * sizeof(int)) से मेमोरी आवंटित करें आवंटन सफलता जांचें (NULL जांच) n संख्याएँ पढ़कर आवंटित मेमोरी में संग्रहीत करें प्रत्येक संख्या के लिए
-
C प्रोग्रामिंग में डायनामिक मेमोरी आवंटन (Dynamic Memory Allocation)
डायनामिक मेमोरी आवंटन क्या है? प्रोग्राम निष्पादन के दौरान (रनटाइम) मेमोरी आवंटित करना। कंपाइल टाइम पर आकार निश्चित नहीं होता। मुख्य फंक्शन्स (stdlib.h) फंक्शनउद्देश्यप्रारंभिकरण malloc(size)बाइट्स में ब्लॉक आवंटितअनारंभिकृत (कचरा) calloc(n, size)n तत्वों के लिए सन्निहित ब्लॉकशून्य-प्रारंभिकृत re
-
C प्रोग्रामिंग में रनटाइम पर द्वि-आयामी सरणी (2D Array) के साथ काम करना
रनटाइम आरंभिकरण (डायनामिक आवंटन) कंपाइल टाइम पर आकार निश्चित करने के बजाय, रनटाइम पर उपयोगकर्ता इनपुट से आकार लेकर मेमोरी आवंटित करना। 2D सरणी के लिए डायनामिक आवंटन विधियाँ विधि 1: पॉइंटर्स की सरणी (जैग्ड सरणी) int **arr = malloc(rows * sizeof(int*)); for (int i = 0; i < rows; i++) arr[i] =
-
C भाषा में पॉइंटर्स की अवधारणा समझने के लिए प्रोग्राम
पॉइंटर क्या है? पॉइंटर एक चर है जो दूसरे चर का मेमोरी पता संग्रहीत करता है। यह सीधे मेमोरी एक्सेस सक्षम करता है। पॉइंटर्स की विशेषताएं मेमोरी बचत: बड़े डेटा की कॉपी के बजाय पता पास करें तेज निष्पादन: सीधा मेमोरी एक्सेस डायनामिक मेमोरी: malloc/free के लिए आवश्यक डेटा संरचनाएं: लिंक्ड लिस्ट, ट्री,
-
C भाषा में strlen() लाइब्रेरी फंक्शन का प्रदर्शन
strlen() फंक्शन strlen() (string.h) स्ट्रिंग की लंबाई (नल टर्मिनेटर \0 से पहले के वर्णों की संख्या) लौटाता है। सिंटैक्स size_t strlen(const char *str); रिटर्न प्रकार: size_t (अनसाइन्ड पूर्णांक) पैरामीटर: const char* - स्ट्रिंग संशोधित नहीं होती समय जटिलता: O(n) - हर बार पूरी स्ट्रिंग स्कैन करता
-
C भाषा में वर्ण विश्लेषण फंक्शन्स (Character Analysis Functions)
ctype.h लाइब्रेरी <ctype.h> हेडर फाइल में वर्णों के विश्लेषण और रूपांतरण के लिए स्टैंडर्ड फंक्शन्स होते हैं। ये int लेते हैं (ताकि EOF संभाल सकें) और int लौटाते हैं। विश्लेषण फंक्शन्स (Analysis Functions) फंक्शनविवरणरिटर्न (सत्य=शून्येतर) isalpha(c)वर्णमाला अक्षर (A-Z, a-z)हाँ isdigit(c)दशम
-
C भाषा में स्ट्रिंग में वर्ण, अंक और विशेष वर्ण गिनना
समस्या दिए गए स्ट्रिंग में अक्षर (alphabets), अंक (digits) और विशेष वर्ण (special characters) की संख्या गिनना। एल्गोरिदम स्ट्रिंग को अंत तक (\0) पार करें प्रत्येक वर्ण के लिए जांचें: a-z या A-Z → अक्षर काउंटर बढ़ाएं 0-9 → अंक काउंटर बढ़ाएं अन्यथा → विशेष वर्ण काउंटर बढ़ाएं ctype.h
-
C भाषा में कस्टम atoi() फंक्शन बनाना
atoi() फंक्शन स्टैंडर्ड लाइब्रेरी फंक्शन atoi() (stdlib.h) स्ट्रिंग को पूर्णांक में बदलता है। केवल अग्रणी संख्यात्मक भाग बदलता है गैर-संख्यात्मक वर्ण मिलने पर रुक जाता है अमान्य इनपुट पर 0 लौटाता है (कोई त्रुटि संकेत नहीं) ओवरफ्लो व्यवहार अनिर्धारित कस्टम atoi() क्यों बनाएं? त्रुटि पहचान (सफलता
-
C भाषा में नेस्टेड स्ट्रक्चर (Nested Structures)
नेस्टेड स्ट्रक्चर क्या है? एक स्ट्रक्चर के अंदर दूसरी स्ट्रक्चर की घोषणा को नेस्टेड स्ट्रक्चर या स्ट्रक्चर के भीतर स्ट्रक्चर कहते हैं। यह संबंधित डेटा को तार्किक रूप से समूहित करने के लिए उपयोगी है। घोषणा के तरीके तरीका 1: अलग स्ट्रक्चर फिर नेस्टिंग struct Address { char city[30]; char s
-
C भाषा में बिना सदस्यों वाली स्ट्रक्चर घोषित करना
क्या संभव है? हाँ, C में खाली स्ट्रक्चर (बिना सदस्यों वाली) घोषित करना अनुमत है। इसका आकार 0 बाइट्स होता है। उदाहरण प्रोग्राम #include <stdio.h> // खाली स्ट्रक्चर struct Empty { // कोई सदस्य नहीं }; int main() { struct Empty e; // चर घोषणा printf(खाली स्ट्रक्चर का आकार: %zu बा
-
C भाषा में पूरी स्ट्रक्चर को फंक्शन में आर्गुमेंट के रूप में पास करना
पास बाय वैल्यू (Pass by Value) जब पूरी स्ट्रक्चर को फंक्शन में पास किया जाता है, तो उसकी एक प्रति (copy) बनती है। मूल स्ट्रक्चर अपरिवर्तित रहती है। सिंटैक्स // फंक्शन घोषणा void display(struct Student s); // मान द्वारा // कॉल struct Student s1 = {1, Amit, 85.5}; display(s1); // कॉपी पास होती ह
-
C भाषा में स्ट्रक्चर की सरणी (Array of Structures)
स्ट्रक्चर की सरणी क्या है? एक ही प्रकार के कई स्ट्रक्चर चरों को सरणी के रूप में संगठित करना। यह सबसे आम उपयोग है स्ट्रक्चर का। घोषणा // 1. पहले स्ट्रक्चर परिभाषित करें struct Student { int id; char name[30]; float percentage; }; // 2. फिर सरणी घोषित करें struct Student record[3]; //
-
C भाषा में सरणी सूचकांक आउट ऑफ बाउंड्स (Out of Bounds)
आउट ऑफ बाउंड्स क्या है? यदि सरणी का आकार n है, तो वैध सूचकांक 0 से n-1 तक होते हैं। इस सीमा से बाहर किसी सूचकांक को एक्सेस करना आउट ऑफ बाउंड्स कहलाता है। व्यवहार कंपाइलर आमतौर पर त्रुटि नहीं देता (C बाउंड्स चेक नहीं करता)। प्रोग्राम कंपाइल और रन हो जाता है। परिणाम अनिश्चित (Undefined Behavior - U
-
C भाषा में अनारंभिकृत सरणी (Uninitialized Array) एक्सेस करना
समस्या C में यदि सरणी को प्रारंभिकृत (initialize) किए बिना उपयोग किया जाए, तो क्या होता है? व्यवहार कंपाइलर कोई त्रुटि या चेतावनी नहीं देता (कुछ कंपाइलर -Wall पर चेतावनी दे सकते हैं)। प्रोग्राम सफलतापूर्वक कंपाइल और रन होता है। सरणी तत्वों में कचरा मान (garbage values) होते हैं - जो भी बाइट्स उस
-
C भाषा में स्थानीय स्कोप (Local Scope) में स्ट्रक्चर प्रोग्राम
स्ट्रक्चर (Structure) क्या है? स्ट्रक्चर विभिन्न डेटा प्रकारों के चरों का संग्रह है जिन्हें एक ही नाम के तहत समूहित किया जाता है। यह संबंधित डेटा को एक इकाई के रूप में व्यवस्थित करता है। स्ट्रक्चर की विशेषताएं असाइनमेंट ऑपरेटर (=) से पूरी स्ट्रक्चर कॉपी की जा सकती है। नेस्टेड स्ट्रक्चर (स्ट्रक्चर
-
C भाषा में यूनियन टू पॉइंटर (Union to Pointer)
यूनियन (Union) क्या है? यूनियन एक यूजर-डिफाइंड डेटा प्रकार है जो एक ही मेमोरी स्थान को विभिन्न डेटा प्रकारों के सदस्यों के लिए साझा करने की अनुमति देता है। किसी भी समय केवल एक सदस्य ही मान रख सकता है। यूनियन की घोषणा union यूनियन_नाम { डेटा_प्रकार सदस्य1; डेटा_प्रकार सदस्य2; // ... };
-
C भाषा में पॉइंटर टू पॉइंटर (डबल पॉइंटर) कैसे परिभाषित करें?
डबल पॉइंटर की घोषणा सामान्य पॉइंटर की तरह ही, बस एक अतिरिक्त * जोड़ें। सिंटैक्स डेटा_प्रकार **पॉइंटर_नाम; // उदाहरण int **ptr; char **strPtr; चरण-दर-चरण प्रारंभिकरण int value = 100; // 1. सामान्य चर int *p1 = &value; // 2. सिंगल पॉइंटर (value का पता) int **p2 = &p1; // 3
-
C प्रोग्रामिंग में फाइल्स की आवश्यकता क्यों?
फाइल्स क्यों आवश्यक हैं? प्रोग्राम निष्पादन के दौरान मेमोरी (RAM) में डेटा अस्थायी होता है। फाइल्स स्थायी भंडारण (Persistent Storage) प्रदान करती हैं। मुख्य कारण कारणव्याख्या डेटा स्थायित्वप्रोग्राम समाप्त होने पर RAM डेटा खो जाता है; फाइल में डेटा सुरक्षित रहता है। बड़ा डेटाबड़ी मात्रा में डेटा