1. परिचय
C भाषा मा “एरेको आरम्भ” प्रोग्रामिङ गर्दा अत्यन्त महत्वपूर्ण अवधारणा हो। विशेष गरी, एकैपटक आरम्भलाई उपयुक्त रूपमा प्रयोग गरेर, कोडको पठनीयता सुधार गरि, बगलाई रोक्न सकिन्छ।
यस लेखमा, C भाषाको एरेलाई एकैपटक आरम्भ गर्ने तरिकालाई विस्तृत रूपमा व्याख्या गर्नेछौं। मूलभूत एरेको परिभाषा देखि, बह-आयामिक एरेको आरम्भ, memset
प्रयोग गर्ने तरिका, साथै std::fill
जस्ता C++ मा प्रयोग हुने आरम्भ विधिहरू सम्म, व्यापक रूपमा समेटिएको छ। सुरूवात गर्नेहरूदेखि मध्यवर्ती स्तरका व्यक्तिहरू सम्म, व्यावहारिक ज्ञान प्राप्त गर्न सकिने सामग्री भएकोले, कृपया अन्त्यसम्म हेर्नुहोस्।
2. एरेको मूलभूत
2.1 एरे भनेको के हो
एरे भनेको, एउटै प्रकारको बहु डेटा लाई लगातार मेमोरी क्षेत्र मा संग्रह गर्ने डेटा संरचना हो। उदाहरणका लागि, पूर्णांक प्रकार (int
) को चलहरूलाई धेरै सङ्गै व्यवस्थापन गर्न चाहँदा, एरे प्रयोग गरिन्छ।
2.2 एरेको घोषणा विधि
C भाषा मा एरेको घोषणा यस प्रकार गरिन्छ।
डेटा प्रकार सरणी नाम[तत्व संख्या];
उदाहरणका लागि, ५ वटा पूर्णांक संग्रह गर्ने एरे परिभाषित गर्ने हो भने, तलको जस्तै लेखिन्छ।
int numbers[5];
2.3 एरेको मेमोरी व्यवस्था र तत्वहरूमा पहुँच
एरेका तत्वहरूलाई 0 बाट सुरु हुने अनुक्रमणिका प्रयोग गरेर पहुँच गर्न सकिन्छ। तलको कोड हेर्नुहोस्।
#include <stdio.h>
int main() {
int numbers[5] = {10, 20, 30, 40, 50};
printf("%dn", numbers[0]); // 10
printf("%dn", numbers[1]); // 20
printf("%dn", numbers[4]); // 50
return 0;
}
3. एरेको आरम्भ गर्ने तरिका
3.1 व्यक्तिगत आरम्भ
एरेका प्रत्येक तत्वलाई एक-एक गरेर निर्दिष्ट गरेर आरम्भ गर्ने विधि हो।
int numbers[5];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
numbers[3] = 40;
numbers[4] = 50;
3.2 समूहिक आरम्भ
घोषणाको समयमा मूल्यहरूलाई एकैचोटि निर्दिष्ट गरेर आरम्भ गर्ने विधि हो।
int numbers[5] = {10, 20, 30, 40, 50};
साथै, एरेको आकारलाई छोड्न पनि सम्भव छ।
int numbers[] = {10, 20, 30, 40, 50};
यदि यस अवस्थामा, कम्पाइलरले स्वचालित रूपमा आरम्भीकरण सूचीका तत्वहरूको संख्यालाई आधार मानेर आकार निर्धारण गर्छ।
3.3 आंशिक आरम्भ
आरम्भ सूचीमा केही तत्व मात्र निर्दिष्ट गर्दा, निर्दिष्ट नगरिएका भागहरू स्वचालित रूपमा ० ले भरिन्छ।
int numbers[5] = {10, 20}; // बाकीका तत्वहरू 0 हुनेछन्

4. विशिष्ट मानहरूमा एकैपटक आरम्भिकरण
4.1 memset
फङ्क्शनको प्रयोग
memset
बाइट इकाइमा मेमोरी भर्ने फङ्क्शन हो। उदाहरणका लागि, एरेलाई सबैलाई 0
मा आरम्भिकरण गर्दा उपयोगी हुन्छ।
#include <stdio.h>
#include <string.h>
int main() {
int numbers[5];
memset(numbers, 0, sizeof(numbers));
for (int i = 0; i < 5; i++) {
printf("%d ", numbers[i]); // 0 0 0 0 0
}
return 0;
}
4.2 for
लूप प्रयोग गरेर आरम्भिकरण
लूप प्रयोग गर्दा, कुनै पनि मानसँग एरेका सबै तत्वहरूलाई आरम्भिकरण गर्न सकिन्छ।
int numbers[5];
for (int i = 0; i < 5; i++) {
numbers[i] = 100; // सबै तत्वहरूलाई 100 मा सेट गर्नुहोस्
}
4.3 C++ मा std::fill
को प्रयोग
C++ मा std::fill
प्रयोग गरेर, अझ सरल तरिकाले आरम्भिकरण गर्न सकिन्छ।
#include <iostream>
#include <algorithm>
int main() {
int numbers[5];
std::fill(numbers, numbers + 5, 100); // सबै 100 मा सेट गर्नुहोस्
for (int i = 0; i < 5; i++) {
std::cout << numbers[i] << " "; // 100 100 100 100 100
}
return 0;
}
5. बहु-आयामी एरेको आरम्भिकरण
5.1 2-आयामी एरेको घोषणा र आरम्भिकरण
मूल संरचना
int matrix[3][3];
समूहिक आरम्भिकरण
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
5.2 memset
प्रयोग गरेर बहु-आयामी एरेको आरम्भिकरण
#include <stdio.h>
#include <string.h>
int main() {
int matrix[3][3];
memset(matrix, 0, sizeof(matrix)); // सार्वजनिक सरणीलाई 0 ले भर्नुहोस्
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]); // सबै 0 हरू प्रिन्ट हुनेछ
}
printf("n");
}
return 0;
}
6. आरम्भिकरणको समयमा ध्यान दिनुपर्ने बुँदा र सर्वश्रेष्ठ अभ्यास
6.1 नआरम्भिकृत एरेले उत्पन्न बग
C भाषा मा、स्थानीय चल(स्ट्याक क्षेत्रका चल)डिफल्ट रूपमा प्रारम्भिकृत हुँदैनन्।
#include <stdio.h>
int main() {
int numbers[5]; // प्रारम्भ गरिएको छैन
for (int i = 0; i < 5; i++) {
printf("%d ", numbers[i]); // अनिश्चित मानहरू आउटपुट हुन सक्छ
}
return 0;
}
समाधान:
int numbers[5] = {0}; // सबै तत्वहरूलाई 0 मा आरम्भ गर्नुहोस्
6.2 memset
को लागू दायरा
#include <stdio.h>
#include <string.h>
int main() {
int numbers[5];
memset(numbers, 0, sizeof(numbers)); // सबैलाई 0 मा आरम्भिकरण
for (int i = 0; i < 5; i++) {
printf("%d ", numbers[i]); // 0 0 0 0 0
}
return 0;
}
6.3 पठनीयता र मर्मतयोग्यताको सुधार
int matrix[3][3] = {
{ 1, 2, 3},
{ 4, 5, 6},
{ 7, 8, 9}
};
7. FAQ(बारम्बार सोधिने प्रश्नहरू)
7.1 memset
द्वारा मनपर्ने मान सेट गर्न सकिन्छ?
int numbers[5];
memset(numbers, 5, sizeof(numbers)); // यो गलत छ!
सही तरिका
for (int i = 0; i < 5; i++) {
numbers[i] = 5;
}
7.2 बहु-आयामी एरेलाई memset
द्वारा आरम्भ गर्न सकिन्छ?
int matrix[3][3];
memset(matrix, 0, sizeof(matrix));
7.3 संरचना एरेलाई एकै पटक आरम्भ गर्ने तरिका के हो?
struct Point {
int x;
int y;
};
struct Point points[3] = {
{1, 2},
{3, 4},
{5, 6}
};
8. सारांश
8.1 मुख्य बुँदाहरूको पुनरावलोकन
- स्थानीय चलको एरेलाई अनइनिशियलाइज्ड अवस्थामा प्रयोग नगर्नुहोस्!
- इनिशियलाइजेशन सूचीको आकार र एरेको आकार मिल्छ कि जाँच गर्नुहोस्
- ग्लोबल चल र स्थिर चलहरूलाई डिफल्ट रूपमा 0 मा इनिशियलाइज गर्नुहोस्
memset
लाई पूर्णांक प्रकारको एरेमा प्रयोग गर्दा सावधानी अपनाउनुहोस्- ठूलो एरेलाई
for
लूपमा इनिशियलाइज गर्नु उपयुक्त हुन्छ
8.2 कोड उदाहरण: उपयुक्त इनिशियलाइजेसनको अभ्यास
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
// एकै पटक आरम्भ
int arr1[5] = {1, 2, 3, 4, 5};
// memset प्रयोग गरेर शून्य आरम्भ
int arr3[5];
memset(arr3, 0, sizeof(arr3));
// for लूप प्रयोग गरेर आरम्भ
int arr4[5];
for (int i = 0; i < 5; i++) {
arr4[i] = i * 10;
}
// परिणाम प्रदर्शन
printf("arr1: ");
for (int i = 0; i < 5; i++) printf("%d ", arr1[i]);
printf("n");
printf("arr3: ");
for (int i = 0; i < 5; i++) printf("%d ", arr3[i]);
printf("n");
printf("arr4: ");
for (int i = 0; i < 5; i++) printf("%d ", arr4[i]);
printf("n");
return 0;
}
8.3 अन्तमा
एरेको इनिशियलाइजेसन प्रोग्रामको स्थिरतालाई प्रभाव पार्ने महत्वपूर्ण तत्व हो।
उपयुक्त इनिशियलाइजेसन गरेर, बगलाई रोक्न, पढ्न सजिलो कोड लेख्न सकिन्छ।
पक्कै पनि, यस पटक सिकेको सामग्रीलाई वास्तविक कोड लेखेर परीक्षण गर्नुहोस्!