int n = 0, array[n];
sizeof(array) = 0
n = 5;
sizeof(array) = 0

এই অ্যারেতে ৫ টা int টাইপের ডাটা স্টোর করা যাচ্ছে কিন্তু কিভাবে?

প্রবলেম সলভিংয়ের সময় এইভাবে যদি কোড লিখা হয় এর জন্য কোন ধরণের Error পাওয়া যাবে কি?

cpbook এর একটা প্রবলেম মনে হয় এইভাবে কোড লিখে সলভড করছিলাম। কোন সমস্যা ছাড়াই Accepted হইছিলো।

asked 06 May '16, 11:04

_Shaon_'s gravatar image

_Shaon_
796323


int n = 5, a[n];

....এভাবে লেখা সঠিক নয়। n আকারের একটি অ্যারে নেওয়ার জন্য আপনি C তে malloc() ফাংশান ব্যবহার করতে পারেন অন্যকথায় Dynamic Memory Allocation করতে পারেন। সেক্ষেত্রে প্রথমে আপনি উপরের a অ্যারেটিকে পয়েন্টার হিসেবে নেবেন ( *a )। n = ৫ আকারের অ্যারে নিতে এভাবে লিখবেনঃ

n = 5;

a = (int * ) malloc(n*sizeof(int));

malloc() void টাইপের পয়েন্টার দেয়, তাই তাকে int টাইপে টাইপ ক্যাস্ট করলাম। আর ৫ আকারের অ্যারেতে যেহেতু ৫ টি int টাইপ ভ্যারিয়েবল থাকবে, কাজেই ৫ টি int টাইপ ভ্যারিয়েবলের জায়গা নিলাম। আর হ্যাঁ, malloc() ব্যবহার করলে অ্যারেকে নিয়ে আপনার যা কাজ তা শেষ করে মেমোরি ফ্রি বা খালি করে দিতে ভুলবেন না। কাজটি এভাবে করবেনঃ

free(a); ( ব্র্যাকেটের ভেতর অ্যারের নাম)।

উদাহরণঃ

#include <stdio.h>
#include <stdlib.h>        /// This is the header file for malloc() and free()...
int main()
{
    int n, *a, i;
    scanf("%d", &n);
    a = (int *) malloc(n * sizeof(int));
    for(i=0; i<n; i++) {
        scanf("%d", &a[i]);
    }
    for(i=0; i<n; i++) {
        printf("%d ", a[i]);
    }
    free(a);
    return 0;
}

ধন্যবাদ।

permanent link

answered 11 May '16, 12:28

Najat's gravatar image

Najat
5398

edited 03 Aug '16, 08:18

-1

sizeof() is a function, it's syntax is int sizeof(array[]).

I.e. it takes array as input and returns a integer value equals to the size of the array.

But here you tried to assign a value '0' to a function, which is completely illegal syntax as per c programming. You can assign the returned value to a int variable, like,.

int size=sizeof(array);

permanent link

answered 08 May '16, 17:05

mrinmoy1000's gravatar image

mrinmoy1000
392

বাংলায় লিখেন

(09 May '16, 04:19) _Shaon_
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:

×402
×56
×1

question asked: 06 May '16, 11:04

question was seen: 1,138 times

last updated: 03 Aug '16, 08:18