One dimensional array of numbers and characters: declaration, initialization

Array एक ही नाम है एक जैसे-type वाले boxes की एक कतार का, जो ZERO से numbered हैं: int marks[60], 60 variables की जगह लेता है, और अंत में एक छिपे '\0' वाला char array ही C में text रखने का तरीका है।

11 min read · 10 cards · 3 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

60 variables, या एक idea

Marks program को सभी 60 students के marks एक ही साथ याद रखने हैं (आप topper तब नहीं ढूँढ सकते जब हर mark को अगला आते ही भूलते जाएँ)।

Horror-movie वाला version: int m1, m2, m3, ... m60; और 60 scanf lines।

C वाला version: एक नाम, 60 numbered boxes:

int marks[60];

यह एक array है, और loops के बाद, यह इस subject का दूसरा सबसे बड़ा idea है। यह C का सबसे मशहूर आश्चर्य भी छिपाता है: numbering ZERO से शुरू होती है।

Theory

एक railway coach

Array एक railway coach है: एक coach का नाम (S4), कई एक जैसी berths, हर एक पर एक number। आप कभी नहीं कहते "Ramesh नाम वाली berth"; आप कहते हैं "S4, berth 23"। एक जैसी shape की berths (एक ही data type), लगातार (memory में अगल-बगल), number से तुरंत पहुँच में। C की एक अजीब बात: पहली berth का number 0 है, और इस unit का हर आगे का lesson इसी बात पर टिका है।

Theory

Declaration और initialization

  • Declare: int marks[5]; पाँच int boxes reserve करता है, array की उम्र भर size तय।
  • Initialize: int marks[5] = {70, 55, 90, 62, 78};
  • Partial: int marks[5] = {70, 55}; बाकी को zeros से भरता है।
  • C को गिनने दें: int marks[] = {70, 55, 90}; एक size-3 array बनाता है।

Indexing: marks[0] पहला element है, marks[4] पाँच में से आख़िरी। Index हमेशा 0 से n-1 तक चलता है। और marks[i] एक for loop के साथ वही शादी है जिसके बारे में यह unit है:

for (i = 0; i < 5; i++) printf("%d\n", marks[i]);

Theory

Character arrays: C में text

Text बस chars का एक array है:

char name[10] = "Riya";

Memory रखती है: R i y a `\0` और पाँच खाली boxes। वह \0 (null terminator, ASCII 0) invisible है पर ज़रूरी: यह चिह्नित करता है कि TEXT कहाँ खत्म होता है, क्योंकि array खुद word से बड़ा है। हर string function जिससे आप मिलेंगे (strlen, printf %s...) array पर तब तक चलता है जब तक \0 न मिल जाए।

ध्यान से गिनिए: "Riya" को कम से कम 5 boxes चाहिए, चार letters और terminator।

Quiz

int marks[5] के लिए, कौन से indexes valid हैं?

  1. 0 to 4
  2. 1 to 5
  3. 0 to 5
  4. 1 to 4
Show the answer

0 to 4

पाँच boxes, zero से numbered: 0, 1, 2, 3, 4। marks[5] लिखना array के बाहर कदम रखता है, और C आपको रोकता नहीं: वह compile होता है, चलता है, और चुपचाप जो पड़ोस में रहता है उसे corrupt कर देता है (undefined behaviour)। n-boxes-का-मतलब-0-से-n-1 वाला नियम अस्तित्व में सबसे ज़्यादा test होने वाला array तथ्य है।

Think first

Boxes पढ़िए

int marks[5] = {70, 55, 90, 62, 78}; दिया है, दिमाग़ में निकालिए: marks[0], marks[2], और marks[4] क्या हैं? और marks[5] में क्या ख़तरनाक है?

Show the answer

marks[0] = 70 (पहला box), marks[2] = 90 (तीसरा box), marks[4] = 78 (पाँचवाँ और आख़िरी)। marks[5] एक पाँच-box array का छठा box होगा: out of bounds, कोई compiler error नहीं, runtime पर garbage पढ़ना या पड़ोसी को corrupt करने वाला लिखना। अगर आपने marks[2] के लिए 55 जवाब दिया, तो आपने एक से गिना, ठीक वही आदत जिसे इस unit को तोड़ना है।

Quiz

char city[10] = "Surat"; Text असल में कितने boxes घेरता है, और letter t के ठीक बाद क्या बैठता है?

  1. 6 boxes: S-u-r-a-t और terminator '\0'
  2. 5 boxes: ठीक पाँच letters
  3. 10 boxes: पूरा array ही text है
  4. 6 boxes: पाँच letters और एक space character
Show the answer

6 boxes: S-u-r-a-t और terminator '\0'

String literals एक invisible मेहमान लाते हैं: आख़िरी letter के बाद null terminator '\0', इसलिए "Surat" दस-box array के अंदर छह boxes घेरता है। बाकी चार खाली हैं। यह '\0' (ASCII 0) है, space (ASCII 32) नहीं, और इस +1 को भूलना क्लासिक char-array sizing error है।

Watch out

Marks (और programs) कहाँ कटते हैं

एक से गिनना: marks[1] दूसरा element है; zero-start पक्का कर लीजिए। Out of bounds: valid indexes n-1 पर खत्म; marks[n] ठीक compile होता है और चुपचाप corrupt करता है, C आप पर पूरा भरोसा करता है। '\0' की जगह भूलना: char name[4] = "Riya" में terminator के लिए जगह नहीं, और string functions अंत के आगे भाग जाएँगे। Fixed size: array बाद में बढ़ नहीं सकता; जितना ज़्यादा से ज़्यादा चाहिए उतना declare कीजिए।

Theory

यहाँ से unit का रास्ता

बाद के लिए एक और राज़: array का NAME (marks) दरअसल box zero का ADDRESS है, इसीलिए scanf("%s", name) को कोई & नहीं चाहिए था, और यही आगे तीन lessons बाद pointers की पूरी कहानी बन जाता है। पर अगला: arrays को काम में लाना, किसी roll number को ढूँढना और toppers की list sort करना, वे operations जो exams हर साल पूछते हैं।

Summary

Key takeaways

  • Array: एक नाम, n एक जैसे-type boxes, memory में लगातार, size तय।
  • Indexing ZERO से शुरू: valid indexes 0 से n-1; marks[0] पहला है।
  • पूरा initialize कीजिए, आंशिक (बाकी 0 हो जाते हैं), या {} से C को गिनने दें।
  • marks[i] + एक for loop, दर्जनों variables की जगह लेता है।
  • char arrays text रखते हैं एक invisible '\0' terminator के साथ: "Riya" को 5 boxes चाहिए।
  • Out-of-bounds access चुपचाप compile होता है और corrupt करता है, C कभी जाँच नहीं करता।
  • याद रखने का hook: एक railway coach, berths zero से numbered।

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Concepts of Arrays and Pointer

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

One dimensional array of numbers and characters: declaration, initialization · Computer Programming and Programming Methodology (CPPM) · Gri-Learn