برای برگشت دادن آرایه از تابع راه های زیادی هست که توی این لینک توضیح داده شده return کردن آرایه
برای برگشت آرایه از int باید *int استفاده کنین نه int
int* selectionSort(int x[]);
داخل main هم b به همین شکل باید تعریف بشه :
int *b = selectionSort(a);
اجرا : https://ideone.com/3yP2xh
یک نکته دیگه زمانی که آرایه به تابع ارسال میشه آدرس خونه اول آرایه فرستاده میشه به تابع یعنی این که در مثالی که زدید a که داخل main هست داخل تابع SelectionSort مقدارش عوض میشه که احتمالا چیزی نیست که شما میخواهین پس باید قبل از فرستادن به تابع کپی ازش گرفته بشه , و از اون جایی که زمان ارسال آدرس فرستاده میشه نیازی هم به برگرداندن چیزی نیست .
کپی کردن آرایه با استفاده از std::copy انجام میشه :
#include <iostream>
#include <algorithm>
using namespace std;
void selectionSort(int x[]);
int main()
{
int a[5] = { 7, 6, 14, 3, 8 };
int b[5];
std::copy(std::begin(a), std::end(a), std::begin(b));//copy kardan az aval ta akhar a be aval b
selectionSort(b);
for (int i = 0; i <= 4; i++)
{
cout << b[i] << " ";
}
cin.get();
}
void selectionSort(int x[])
{
int temp;
for (int i = 0; i < 5; i++)
{
for (int j = i + 1; j<5; j++)
{
if (x[i] > x[j])
{
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
}
و این که به جای آرایه توی ++C بهتره که از std::vector استفاده بشه