Bir dizinin kopyasını çıkarıp kopyayı döndüren bir fonksiyon yazınız. Fonksiyon kopyalanacak diziyi ve boyutunu parametre olarak alır ve oluşturduğu kopyanın göstergesini döndürür.
Örnek Çıktı ----------- Dizinin boyutunu giriniz:5 Dizinin elemanlarini giriniz:2 4 6 8 10 Dizinin kopyasi:2 4 6 8 10
< Bu mesaj bu kişi tarafından değiştirildi cs233 -- 11 Ağustos 2017; 21:11:32 >
1-)kullanıcıdan parametreler istenir 2-) dizi[kullanıcı parametresi 1] kullanılarak dizinin boyutu belirlenir. 3-)dizinin ilk elemanının adresini (&dizi[0]) işaretçine eşitlersin ve artık işaretçi yardımıyla dizinin tüm elemanlarına erişmiş olursun.
sordugundan anladigim simdi fonksiyona gelen arrayi fonksiyon icinde olsuturdugun arraye kopyalayip onu baska bir array icin dondurmek.
#include <iostream>
int* foo(int src[], int size); void print_array(const int src[], int size);
int main() { int src[5] = {1, 1, 2, 3, 5}; // kopyalanacak array int *dst; //kopya arrayin adresi dst = foo(src, 5); print_array(dst, 5); delete[] dst; // heapten aldigimiz alani geri veriyoruz return 0; }
int* foo(int src[], int size){ //arrayi heapte olsuturmamiz lazim. stackte olustursaydik int tmp[5]; gibi. fonksiyon bittiginde array serbest birakilacakti. //dangling pointer diye aratabilirsin int *tmp = new int[size]; for(int i = 0; i < size; ++i){ tmp[i] = src[i]; } return tmp; }
void print_array(const int src[], int size){ std::cout << "["; for(int i = 0; i < size; ++i){ if(i == size -1) std::cout << src[i] << "]"; else std::cout << src[i] << ", "; } }
Örnek Çıktı
-----------
Dizinin boyutunu giriniz:5
Dizinin elemanlarini giriniz:2 4 6 8 10
Dizinin kopyasi:2 4 6 8 10
< Bu mesaj bu kişi tarafından değiştirildi cs233 -- 11 Ağustos 2017; 21:11:32 >