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
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
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
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi cs233 -- 11 Ağustos 2017; 21:11:32 >