PDA

View Full Version : اشکال تابع در کجاست



محسن=0
سه شنبه 17 فروردین 1395, 04:01 صبح
سلام یه برنامه ساده هست که تعداد عناصر ارایه رو چاپ میکنه اما خروجی تابع همیشه 1 هست .اشکالش چیه ؟
#include <iostream>
using namespace std;
void sizee(int a[]);
int main()
{
int a[]={1,4,34,453,34,234,234,343};
sizee (a);
return 0;

}
void sizee(int a[])
{
int size=sizeof(a)/sizeof(int);
cout << size ;

}

C3phalex1n_0x
سه شنبه 17 فروردین 1395, 07:48 صبح
سلام، بفرمائید :

#include <iostream>
using namespace std;

void improvedSizee(int [], int);

int main()
{
int array[] = { 1,4,34,453,34,234,234,343 };
int sx = sizeof(array) / sizeof(int);
improvedSizee(array, sx);
return 0;

}
void improvedSizee(int localArray[], int localSize)
{

for (int counter = 0; counter < localSize; counter++)
cout << localArray[counter] << endl;
}

محسن=0
سه شنبه 17 فروردین 1395, 12:48 عصر
ممنون.
اما منظور من این بود که تعداد رو چاپ کنه(در اینجا عدد 8) نه اینکه تک تک عناصر رو چاپ کنه
البته عبارت
int size=sizeof(a)/sizeof(int);
در بیرون تابع مقدار درست رو چاپ میکنه ولی در تابع نه.دلیل چیه؟

C3phalex1n_0x
سه شنبه 17 فروردین 1395, 13:01 عصر
بفرمائید :


#include <iostream>
using namespace std;

void improvedSizee(int [], int);

int main()
{
int array[] = { 1,4,34,453,34,234,234,343 };
int sx = sizeof(array) / sizeof(int);
improvedSizee(array, sx);
return 0;

}
void improvedSizee(int localArray[], int localSize)
{
int counter = 0;
for (counter; counter < localSize; counter++)
cout << localArray[counter] << endl;
cout << "Array cells equals with : " << counter << endl;
}


بعد از اجرای برنامه، تعداد عناصر موجود در آرایه (8 عنصر) را چاپ خواهد کرد.
برای چاپ تعداد عناصر آرایه می تونید از یک کانتر استفاده کنید و نیاز به کار خاص دیگری نیست.

محسن=0
سه شنبه 17 فروردین 1395, 13:08 عصر
ممنون.

چرا اندازه ارایه تو تابع main تابع اصلی 32 بایته اما تو تابع sizee هشت بایته؟

C3phalex1n_0x
چهارشنبه 18 فروردین 1395, 16:00 عصر
چون به تابع آدرس آرایه ارسال می شود.