5.1.24 · D1 · HinglishC Programming

FoundationsUnions — overlapping memory

2,060 words9 min read↑ Read in English

5.1.24 · D1 · Coding › C Programming › Unions — overlapping memory

Parent note ki ek bhi line padhne se pehle, tujhe usmein aane wale har word aur symbol par pakad banani hogi. Neeche har item pichle wale se build hota hai. Koi cheez use nahi hoti jab tak draw na ho.


1. A byte — sabse chota labelled box

Figure — Unions — overlapping memory

Figure dekh: aath chote switches (bits) ek box ke andar baithe hain. Har switch ya toh OFF (0) hai ya ON (1). Aath switches patterns dete hain, toh ek byte se tak hold karta hai.

Topic ko iske zaroort kyun hai: ek union ko poori tarah kitne bytes har member leta hai aur kaunse bytes overlap hote hain — inhi terms mein describe kiya jaata hai. Agar "byte" fuzzy hai, toh baad ki saari cheez fuzzy rahegi.


2. An address — box par likha number

Figure — Unions — overlapping memory

Figure mein red box offset 0 par hai — object ki bilkul pehli box. Parent note baar baar kehta hai "all members start at the same address (offset 0)". Yeh picture usi sentence ko represent karti hai.


3. A type — boxes ka ek group padhne ka rule

Type Boxes (bytes) Kaise padhta hai
char 1 ek byte as a small number / ASCII letter
int usually 4 chaar bytes as a whole number
float 4 chaar bytes as a decimal, ek special bit layout use karke
double 8 aath bytes as a more precise decimal

Topic ko iske zaroort kyun hai: parent ki key warning — koi alag member padhna raw bits ko reinterpret karta hai, convert nahi karta — exactly "same boxes, different ruler" hai.


4. sizeof — boxes measure karne ka tool

Notation padhna: sizeof(union Mix) == 8 ka matlab hai "union measure karne par 8 boxes milte hain." Yahan == C ka is-it-equal? test hai, true/false deta hai — assignment nahi.


5. max aur "worst case"

Figure — Unions — overlapping memory

Figure mein har member ke bytes offset 0 se stack hote hain. Red bar sabse bada member hai — uski length room ka size set karti hai, kyunki room ko worst case (sabse bada tenant) ke liye survive karna hoga.

kyun, (sum) kyun nahi? Ek struct member sizes add karta hai kyunki members alag-alag boxes mein baithe hote hain (sum). Ek union unhe ek hi boxes par overlap karta hai, toh sirf sabse lamba wala matter karta hai (max). Woh ek choice — sum vs max — hi poora fark hai. Dekho Structs — separate memory for each member.


6. Alignment — sizes round up kyun hoti hain

Topic ko iske zaroort kyun hai: parent likhta hai "(plus padding for alignment)" aur kabhi explain nahi karta. Ab tujhe pata hai: padding woh rounding-up hai taaki unions ki arrays ka har element ek legal address par rahe. Poori story: Memory alignment and padding.


7. Endianness — kaunsa byte "pehla" hai

Figure — Unions — overlapping memory

65 number ek int mein, hex mein, 00 00 00 41 hai (sirf aakhri byte mein value hai). Figure little-endian ko dikhata hai ise 41 00 00 00 ki tarah rakhte hue — red 41 box 0 mein land karta hai. Toh box 0 ko char ke roop mein padhne par 0x41 = 'A' milta hai. Yahi exactly parent ka u.c[0] == 'A' example hai. Aur gehrai ke liye: Endianness — byte order.

Topic ko iske zaroort kyun hai: parent ka type-punning example tab tak samajh nahi aata jab tak pata na ho ki 'A' c[0] par kyun aata hai, c[3] par kyun nahi.


8. enum — chote choices ke set ke liye ek naam


9. Thodi C syntax jo tumhe milegi

Topic ko iske zaroort kyun hai: parent ki mistakes = vs == aur {65} sirf member one ko touch karne par hinge karti hain. Ab woh mysteries nahi hain.


Prerequisite map

bit: one on off switch

byte: box holding 0 to 255

address and offset 0

type: rule to read boxes

sizeof: count the boxes

max: biggest member

alignment: round size up

endianness: which byte first

enum: named choices for the tag

UNION overlapping memory


Equipment checklist

Ek byte kitni distinct values hold karta hai, aur kyun?
256, kyunki 8 bits patterns dete hain.
"Offset 0" ka matlab kya hai aur saare union members ise kyun share karte hain?
Object ki pehli box; har union member wahan se start karta hai taaki woh ek hi memory par overlap karein.
Ek hi chaar boxes par do rulers — yeh kya model karta hai?
Type punning: ek hi bytes ko alag types ki tarah padhne par alag values milti hain, bina kisi conversion ke.
sizeof(T) kaunsa sawaal answer karta hai?
Is machine par type T ki ek value kitne bytes occupy karti hai.
Size formula mein aur dono kya karte hain?
sabse bade member ka size pick karta hai; use ek legal multiple tak round up karta hai.
Union ka size max-of-members kyun hai jabki struct ka sum-of-members hota hai?
Ek union members ko ek hi boxes par overlap karta hai (max); ek struct har member ko uske apne boxes deta hai (sum).
Little-endian par, ek int ka least-significant byte kahan jaata hai?
Sabse kam-address wali box (offset 0) mein, isliye u.c[0] use padhta hai.
Enum kya hai aur tagged union iska use kyun karta hai?
Named integer constants ka set; yeh label karta hai ki union ka kaunsa member currently live hai.
C mein = aur == mein kya fark hai?
= ek value assign karta hai; == equality test karta hai aur true/false deta hai.

Connections

  • Structs — separate memory for each member
  • Memory alignment and padding
  • Endianness — byte order
  • Type punning and bit-level reinterpretation
  • Enums
  • sizeof operator