কম্পিউটার

C-তে char s[] এবং char *s-এর মধ্যে পার্থক্য


আমরা দেখেছি কখনও কখনও char s[], বা কখনও char *s ব্যবহার করে স্ট্রিং তৈরি করা হয়। তাই এখানে আমরা দেখব কোন পার্থক্য আছে নাকি তারা একই?

কিছু পার্থক্য আছে। s[] একটি অ্যারে, কিন্তু *s একটি পয়েন্টার। উদাহরণস্বরূপ, যদি দুটি ঘোষণা যথাক্রমে char s[20], এবং char *s এর মত হয়, তাহলে sizeof() ব্যবহার করে আমরা 20, এবং 4 পাব। প্রথমটি হবে 20 কারণ এটি দেখাচ্ছে যে 20 বাইট রয়েছে। তথ্য কিন্তু দ্বিতীয়টি শুধুমাত্র 4 দেখাচ্ছে কারণ এটি একটি পয়েন্টার ভেরিয়েবলের আকার। অ্যারের জন্য, মোট স্ট্রিং স্ট্যাক বিভাগে সংরক্ষণ করা হয়, কিন্তু পয়েন্টারের জন্য, পয়েন্টার ভেরিয়েবল স্ট্যাক বিভাগে সংরক্ষণ করা হয়, এবং বিষয়বস্তু কোড বিভাগে সংরক্ষণ করা হয়। এবং সবচেয়ে গুরুত্বপূর্ণ পার্থক্য হল যে, আমরা পয়েন্টার টাইপ স্ট্রিং সম্পাদনা করতে পারি না। তাই এই শুধুমাত্র পঠনযোগ্য. কিন্তু আমরা স্ট্রিং এর অ্যারে উপস্থাপনা সম্পাদনা করতে পারি।

উদাহরণ

#include<stdio.h>
main() {
   char s[] = "Hello World";
   s[6] = 'x'; //try to edit letter at position 6
   printf("%s", s);
}

আউটপুট

Hello xorld
Here edit is successful. Now let us check for the pointer type string.

উদাহরণ

#include<stdio.h>
main() {
   char *s = "Hello World";
   s[6] = 'x'; //try to edit letter at position 6
   printf("%s", s);
}

আউটপুট

Segmentation Fault

  1. C++ এ একটি পয়েন্টার এবং রেফারেন্স প্যারামিটারের মধ্যে পার্থক্য কী?

  2. C# এবং ভিজ্যুয়াল C# এর মধ্যে পার্থক্য

  3. C# এবং .Net এর মধ্যে পার্থক্য

  4. Go এবং Java এর মধ্যে পার্থক্য।