সি তে আমরা স্টিং এর সাইজ বের করতে strlen ব্যবহার করি । আর sizeof() টা কেন ? এটা দিয়ে স্ট্রিং এর কি বের করা হয় ?

asked 22 Mar '16, 18:54

smsnobin77's gravatar image

smsnobin77
1498


অনেক পার্থক্য

sizeof() দিয়ে যে কোনো ভেরিয়েবল, এরে ও অন্যান্য কাস্টম ডাটার এর সাইজ (বাইট সংখ্যা ) বের করা যায় ।

int arr[100];
int a;
char c;

printf("%d\n",sizeof(arr)); // একটি ইন্টিজার ৪ বাইট ১০০ টি ইন্টিজার ৪০০ বাইট 
printf("%d\n",sizeof(a)); // একটি ইন্টিজার ৪ বাইট
printf("%d\n",sizeof(c)); // একটি ক্যারেকটার ১ বাইট

strlen() একটি স্ট্রিং এ কয়টি ক্যারেকটার আছে তা জানা যায় ।

পার্থক্য

char str[100] = "hello";
printf("%d\n",strlen(str)); // 5
printf("%d\n",sizeof(str)); // 100
permanent link

answered 22 Mar '16, 19:51

Sharif%20Chowdhury's gravatar image

Sharif Chowdhury
3.4k111

sizeof() কে ফাংশন বলা শ্রেয় না বরং এটাকে অপারেটর বলা হয় কারণ সি স্ট্যান্ডার্ড তাই বলে ।

কারণ হিসাবে ধরা যাক :

1. `sizeof`  একটি parenthesised টাইপ অপারেন্ড । যেমনঃ sizeof (int) ।

`

2. বন্ধনীগুলি অপ্রয়োজনীয় । যেমনঃ `int a; printf("%d\n", sizeof a);` পুরোপুরি ঠিক আছে । প্রথমত কারণ তারা 
   একটি টাইপ কাস্টিং এক্সপ্রেশন হিসেবে ব্যবহার হয়েছে । দ্বিতীয়ত কারণ `sizeof` এর প্রেসিডিন্সি অনেক বেশি, তাই 
   `sizeof a + b` এবং  `sizeof (a+b)` একই নয়। তবে sizeof কে ইনভোক করা যায় না তাই তারা অপারেন্ড অংশ।

আপনি,

3. `sizeof` এর এড্রেস গ্রহণ করতে পারবেন না শুধু ভ্যালু নিতে হবে । sizeof অপারেটর রানটাইম এ ইভালুয়েট করা হয় না । 
 যেমনঃ `sizeof a++`  তে `a` এর মান পরিবর্তন করে না । যে এক্সপ্রেশনে sizeof অপারেটরের আপার‍্যান্ড সেটি void ছাড়া 
 যেকোন টাইপের বা ফাংশনও হতে পারে ।

একটি ফাংশন উপড়ের সব পয়েন্টের সাথেই পার্থক্য থাকবে । একটি ফাংশন এবং একটি ইউনারি অপারেটর মধ্যে সম্ভবত আরও অন্যান্য পার্থক্য আছে, কিন্তু sizeof যে ফাংশন না তার জন্য উপরোক্ত কয়েকটি পয়েন্টই যথেষ্ট ।

permanent link

answered 11 Oct, 20:13

kazalbrur's gravatar image

kazalbrur
3036

sizeof() ফাংশন দ্বারা স্ট্রিং এর সাইজ জানা যায় । যেমনঃ

char name[80];  
int nameSize = sizeof(name);                   // nameSize = 80
printf("Size of name is %d byte\n",nameSize);  // 80 byte
permanent link

answered 24 Mar '16, 14:44

Zobayer's gravatar image

Zobayer
111

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×355
×52

question asked: 22 Mar '16, 18:54

question was seen: 843 times

last updated: 11 Oct, 20:13