सरणी क्या है?
सरणी एक ही डेटा प्रकार के निश्चित संख्या में तत्वों का संग्रह है, जो सन्निकट मेमोरी स्थानों में संग्रहीत होते हैं।
घोषणा और आरंभीकरण
// घोषणा
data_type array_name[size];
// उदाहरण
float percentage[10];
int marks[5] = {85, 90, 78, 92, 88};
char name[] = "Hello"; // आकार स्वचालित: 6 (नल टर्मिनेटर सहित)
तत्वों तक पहुंच
- सूचकांक 0 से शुरू होता है
array[index]सिंटैक्स का उपयोग करेंarr[0]= पहला तत्व,arr[n-1]= अंतिम तत्व
मेमोरी लेआउट
सरणी: float percentage[4] = {56.4, 99.0, 12.20, 67.2};
इंडेक्स: 0 1 2 3
मान: 56.4 99.0 12.20 67.2
पता: 1000 1004 1008 1012 (प्रत्येक float = 4 बाइट्स)
बुनियादी ऑपरेशन
1. सभी तत्व प्रिंट करें
#include <stdio.h>
int main() {
float percentage[] = {56.4, 99.0, 12.20, 67.2};
int n = sizeof(percentage) / sizeof(percentage[0]);
printf("सभी मान:\n");
for (int i = 0; i < n; i++) {
printf("तत्व %d = %.2f\n", i+1, percentage[i]);
}
return 0;
}
2. विशिष्ट तत्व एक्सेस करें
float third = percentage[2]; // 12.20
3. तत्व संशोधित करें
percentage[2] = 12.22; // तीसरा तत्व बदलें
पूर्ण उदाहरण
#include <stdio.h>
int main() {
float percentage[4];
// इनपुट
for (int i = 0; i < 4; i++) {
printf("%dवें छात्र का प्रतिशत: ", i+1);
scanf("%f", &percentage[i]);
}
// आउटपुट
printf("\nसभी प्रतिशत:\n");
for (int i = 0; i < 4; i++) {
printf("छात्र %d: %.2f%%\n", i+1, percentage[i]);
}
// अधिकतम खोजें
float max = percentage[0];
for (int i = 1; i < 4; i++)
if (percentage[i] > max) max = percentage[i];
printf("अधिकतम: %.2f%%\n", max);
return 0;
}
बहुआयामी सरणी
// 2D सरणी (मैट्रिक्स)
int matrix[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
// एक्सेस
matrix[1][2] = 7; // दूसरी पंक्ति, तीसरा स्तंभ
// ट्रैवर्सल
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; j++)
printf("%d ", matrix[i][j]);
महत्वपूर्ण बिंदु
- आकार निश्चित होता है संकलन समय पर (C99 से पहले VLA को छोड़कर)
- सीमा जांच नहीं - सीमा से बाहर एक्सेस अपरिभाषित व्यवहार
- सरणी नाम पहले तत्व के पते में क्षय होता है
sizeof(array)केवल घोषणा स्कोप में काम करता है, फ़ंक्शन पैरामीटर में नहीं
सामान्य त्रुटियां
// गलत: आकार के साथ वापसी
int* create_array() {
int arr[10];
return arr; // अपरिभाषित व्यवहार! स्टैक मेमोरी
}
// सही: डायनामिक आवंटन
int* create_array() {
return malloc(10 * sizeof(int));
}