Solved

Find the size of an array

Posted on 2006-06-11
3
274 Views
Last Modified: 2010-04-01
Could anyone tell me how to find the size of an array?

for example if we have

int main()
{
A []={new A(), new A(), new A()};
printf("Size of Array:%d", //function that finds the size of the array(should give 3 in this case));

}

class A
{
public:
A();
};

A::A(){}

is there a function which finds out the size of array?
0
Comment
Question by:csound
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 3

Accepted Solution

by:
srinims earned 25 total points
ID: 16883353
try this--->

u can simply put A[] =,

u have to mention the identifier also, the valid statement is A *a[]=;


#include <stdio.h>

class A
{
public:
A();
};

A::A(){}
int main()
{
      
 A *a[]={new A(), new A(), new A()};
printf("Size of Array:%d",sizeof(a)/sizeof(a[0])); //function that finds the size of the array(should give 3 in this case));

}

0
 
LVL 17

Assisted Solution

by:rstaveley
rstaveley earned 25 total points
ID: 16883853
srinims is right, but you'll notice that you can't determine the size of the array in a function which has the array passed to it as a parameter. Weird, isn't it?

C and C++ have an underhand way of dealing with arrays. C programmers say that they are passed as "references", because "reference" doesn't have the meaning in C that it has in C++. C++ programmers say that you shouldn't be using arrays, because they are evil and bore you with the wonderfulness of vectors.

In C++ you can treat an array passed as a parameter to a function as a pointer. You can even increment it!

--------8<--------
#include <iostream>
using std::cout;

void f(char[10]);

int main()
{
      char a[10];
      for (int i = 0;i < 10;i++)
            a[i] = 'a'+i;
      cout << a[5] << '\n';
      cout << (a+1)[5] << '\n';
      //a++;      // Can't do this!
      cout << a[5]
            << " size "
            << " size " << sizeof(a)/sizeof(*a)      /* This looks sensible */
            << '\n';

      f(a);
}

void f(char a[10])
{
      cout << a[5] << '\n';
      cout << (a+1)[5] << '\n';
      cout << a[5]
            << " size " << sizeof(a)/sizeof(*a)      /* Deceive yourself with this */
            << '\n';
      a++;      // Can do this!
      cout << a[5]      /* Deceive yourself with this */
            << " size " << sizeof(a)/sizeof(*a)      /* Deceive yourself with this */
            << '\n';
      
}
--------8<--------
0
 

Author Comment

by:csound
ID: 16890792
Thanx for you helps!
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Often, when implementing a feature, you won't know how certain events should be handled at the point where they occur and you'd rather defer to the user of your function or class. For example, a XML parser will extract a tag from the source code, wh…
IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…

717 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question