1
1
#include<stdio.h>
int SumOfElements(int A[]) {
 int i,sum=0;
int size = sizeof(A) / sizeof(A[0]);
printf("Size of A = %d , Size of A[0] = %d\n", sizeof(A), sizeof(A[0]));

    for(i=0; i<size; i++)
{
sum = sum + A[i]; }
   return sum; }

int main() {
int A[]={1, 2, 3, 4, 5};
int total = SumOfElements(A);
printf("\n\n");
printf("Size of A = %d , Size of A[0] = %d\n", sizeof(A), sizeof(A[0])); }

এখানে SumOfElements function এ A এর মান 4 কিন্তু main function এ A এর মান ২০ দেখাচ্ছে কেন?

asked 15 Sep '15, 22:51

Ashiqur%20Rahman's gravatar image

Ashiqur Rahman
736

edited 15 Sep '15, 22:57


sizeof অপারেটর এ্যারের সাইজটাকে byte এ বোঝায় । আপনার কম্পিউটারে int 4 byte (32 bit) হওয়ার কারণে প্রথমে ফাংশনে অ্যারে A এর মান 4 প্রিন্ট করছে। আর মেইন ফাংশনে ৫টা এলিমেন্টের জন্য 4*5 = 20 প্রিন্ট করছে। এখানে যদি আপনি মেইন ফাংশনের অ্যারেতে আরো এলিমেন্ট এ্যাড করেন তাহলে দেখবেন যে A এর মান আরো বাড়বে।

permanent link

answered 16 Sep '15, 10:54

Tamanna%20Nishat%20Rini's gravatar image

Tamanna Nishat Rini ♦♦
2.9k311

1

কিন্তু function এ তো একই array pass (pass by reference) করা হয়েছে, তাহলে কেন একই array এর size এক যায়গাতে 4, আরেক যায়গাতে 20?

(16 Sep '15, 10:59) manetsus
3

যখন এ্যারে pass by reference হয় কোন ফাংশনের মধ্যে তখন সেটা পরোক্ষভাবে pointer এ কনভার্ট হয়ে যায় , তখন সেটা sizeof(int*) এর ভ্যালু আমাদের দেয় । তাই অইখানে 4 দেখাচ্ছে অইখানে যদি array এর সাইজ ৫০ ও দেয়া হয় আমাদের 4-ই দেখাবে।

(16 Sep '15, 11:49) Tamanna Nishat Rini ♦♦

ধন্যবাদ আপু, আমিও তাই ধারণা করে নিয়েছিলাম, কিন্তু সরাসরি কোন যায়গায় reference পেলাম না। আপনার কাছ থেকে নিশ্চিত জানা গেলো। অনেক ধন্যবাদ। @tamanna-nishat-rini

(16 Sep '15, 14:45) manetsus
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:

×50
×26

question asked: 15 Sep '15, 22:51

question was seen: 491 times

last updated: 16 Sep '15, 14:45