Hi,

have tryed and everything below gives me 0

sizeof(array) / sizeof(*array);
sizeof(array) / sizeof(array[0]);
sizeof(array) / sizeof(array data type);
//even the thing which i do not understant:
template< typename T, std::size_t N > inline
std::size_t size( T(&)[N] ) { return N ; }

I need to get the size of pointer array..

here is the whole code:

#include <iostream>
#include <string>
#include <stdlib.h>
#include <fstream>
using namespace std;
//
double * dSM = NULL, * temp;
//
void GaunamDuomenis(string sF);
double TeigiamuVidurkis(double dMasyvas[]);
//
int main ()
{
	string sFP;
	cout << "Filename:\n";
	cin >> sFP;
	GaunamDuomenis(sFP);
	cout << "Arithmetical mean of positive numbers: " << TeigiamuVidurkis(dSM) << endl;
	return 0;
}
//
void GaunamDuomenis(string sF)
{
	string sS;
	ifstream ifsF(sF.c_str());
	if (!ifsF)
		{
		cout << "OOOps couldn't open..\n";
		}
	else
		{
		int i = 0;
		while (getline(ifsF, sS, ' '))
			{
			i++;
			temp = (double*) realloc(dSM, i * sizeof(double));
			if (temp != 0)
				{
				dSM = temp;
				dSM[i-1] = atof(sS.c_str());
				}		
			}
		}
}
//
double TeigiamuVidurkis(double dMasyvas[]) // Need to get length of dMasyvas
{
	double dS = 0, dV = 0;
	int iMI; // variable for the size of array
	cout << iMI << endl;
	for (int i = 0; i < 5; i++)
		{
		if (dMasyvas[i] > 0)
			{
			dS += dMasyvas[i];
			}
		}
	dV = dS / 5;
	return dV;
}

Recommended Answers

All 4 Replies

do you mean this array?

double * dSM = NULL

It depends on the size you pass to new.

do you mean this array?

double * dSM = NULL

It depends on the size you pass to new.

sorry, mistyped (my stupid head..), i wanted to say that i need length of that array not the size (sorry for mistake)

p.s. yes, this array

you can not use sizeof to get the number of bytes allocated to an array. All sizeof(any pointer here) does is give you the size of a pointer -- on 32-bit compilers it will be 4.

There are two solutions I can think of:
1. Use vector instead of array, such as std::vector<double> ay; You can call vector's size() method to get the number of doubles it contains.

2. Pass the array size as another parameter to the functinon.

commented: Thanks ;) +1

you can not use sizeof to get the number of bytes allocated to an array. All sizeof(any pointer here) does is give you the size of a pointer -- on 32-bit compilers it will be 4.

There are two solutions I can think of:
1. Use vector instead of array, such as std::vector<double> ay; You can call vector's size() method to get the number of doubles it contains.

2. Pass the array size as another parameter to the functinon.

thanks for the first soultion, i have already made second myself

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.