Structure as Function Argument
एक structure को आप किसी function में argument के रूप में भी pass कर सकते है। इसके लिए आपको किसी प्रकार के special operator की आवश्यकता नहीं होती है। जिस प्रकार आप normal variables को function arguments के रूप में pass करते है उसी प्रकार आप structure object को भी function में pass करते है।
लेकिन आपको function declaration और definition में parameter को struct keyword के साथ define करना होगा।
return-type function-name(struct-keyword struct-name obj-name)
{ //Function code here... } |
#include<stdio.h>
struct Person { int Id; int Phone; }; void printPerson(struct Person p1); int main() { struct Person p1; p1.Id = 101; p1.Phone = 237434839; printPerson(p1); return 0; } void printPerson(struct Person p1) { printf("Name is : %d\n",p1.Id); printf("Phone number is %d\n",p1.Phone); } |
Id : 101
Phone : 237434839 |
Pointer to Structure
Structure variables के pointers भी create किये जा सकते है। ये उसी तरह create किये जाते है जैसे की आप किसी normal variable के pointers create करते है।
struct-keyword struct-name *struct-pointer-variable; //Creating pointer of struct
pointer-variable = &struct-variable; //Assigning address of struct variable to pointer |
#include<stdio.h>
struct Employee { int Id; int Phone; }; int main() { struct Employee e1; struct Employee *emp; emp = &e1; emp->Id=101; emp->Phone = 237434839; printf("Employee Id : %d\n",emp->Id); printf("Employee Phone : %d\n",emp->Phone); return 0; } |
Employee Id : 101
Employee Phone : 2374334839 |
BitFields
C language आपको memory को सही तरीके से utilize करने की capability provide करती है। यदि आप structure के अंदर ऐसे variables create कर रहे है जो पूरी memory को utilize नहीं करते है तो इस situation में आप उन variables की size define कर सकते है और बता सकते है की उस variable के लिए कितनी memory assign की जानी चाहिए।
आपको एक बात ध्यान रखनी चाहिए की ये आप सिर्फ structure और union members के साथ ही कर सकते है। ऐसा किसी normal variable के साथ नहीं किया जा सकता है।
इसका मुख्य उद्देश्य memory को सही utilization है। जब आपको पता हो की किसी struct member की value निश्चित size से अधिक नहीं होगी तो आप ऐसा कर सकते है।
Variable की size आप bits में define करते है। यही reason होता है की ऐसे variables को bitfields कहा जाता है।
ऊपर दिए गए उदाहरण में यदि आप age variable की value 5 bit से अधिक input करते है तो value minus में show होगी।
आपको एक बात ध्यान रखनी चाहिए की ये आप सिर्फ structure और union members के साथ ही कर सकते है। ऐसा किसी normal variable के साथ नहीं किया जा सकता है।
इसका मुख्य उद्देश्य memory को सही utilization है। जब आपको पता हो की किसी struct member की value निश्चित size से अधिक नहीं होगी तो आप ऐसा कर सकते है।
Variable की size आप bits में define करते है। यही reason होता है की ऐसे variables को bitfields कहा जाता है।
struct struct-name
{ type variable-name : size; }; |
#include<stdio.h>
struct Person { int age : 5; }; int main() { struct Person p1; p1.age = 5; printf("Age is : %d",p1.age); return 0; } |
ऊपर दिए गए उदाहरण में यदि आप age variable की value 5 bit से अधिक input करते है तो value minus में show होगी।
Age is 5
|
0 Comments