2 Boyutlu Array'leri Fonksiyonla Çağırma
-
merhabalar, c++'ta kod yazıyorum. şöyle bir sorunum var. 2 boyutlu bir array'i fonksiyonla çağıracağım, şimdi array'in sütun bilgisine fonksiyon tanımında bi ihtiyaç var, fakat ben arrayin boyutunu sonradan kullanıcıdan alıyorum, fonksiyon tanımlama işlemini nasıl gerçekleştiririm?
Örnekle açıklayacak olursak:
void fonksiyon(int array[][size], int size) //compiler buna izin vermiyor
{
//fonksiyonun gövdesi
}
int main()
{
int size;
cout << "Array boyutunu giriniz:"; //
cin >> size;
int array[size][size] = {0}; //kare bir matris oluşturuyoruz.
fonksiyon(array, size);
}
-
işaretçi kullanman gerekiyor böyle bişeyi gerçekleştirmek için
-
int array[size][size]; hatalı bir tanım, array boyutu sabit olmalı bunu dinamik bellek ayırma yöntemi ile yapabilirsiniz.
-
int **matrix = new int [size][size] şeklinde oluştur array i
Fonksiyon parametresi olarak da int** ve size alarak yapabilirsin
Mantığı böyle de şuan kafam iyi değil yanlış yazmış olabilirim
uLtRaLoVeR tarafından 05/Ağu/13 00:28 tarihinde düzenlenmiştir -
fonksiyon arrayx(int x,int y)
{
int degisken[x][y];
}
böyle fonksiyonun dışından parametreyi girip fonksiyonun içinde arrayı oluşturmak sıkıntı yapar mı?
-
C++ bilmiyorum ama oluyorsa array içinde array oluşturabilirsin çözüm olarak. 2B oluşturursan direk boyutunu ister fakat
OrnekArray = ["1","2", new Array()]gibi bir kullanımla eleman gibi array oluşturabilirsin bence sonradan, c++ izin verir mi bilmiyorum ama.
-
DuPi bunu yazdı
fonksiyon arrayx(int x,int y)
{
int degisken[x][y];
}
böyle fonksiyonun dışından parametreyi girip fonksiyonun içinde arrayı oluşturmak sıkıntı yapar mı?
ne amaçla kullanacağına bağlı eğer fonksiyonu çağırdığın yerdeki bir arrayin içindeki bilgiyi fonksiyon içerisinde kullanmak istiyorsan böyle yapamazsın. eğer fonksiyonda böyle oluşturup bunu dönmek istersen, fonksiyon bitince array silineceğinden seg-fault alırsın. Ama ben array'i oluşturacam kullanacam ama başka birşey dönecem diyorsan bunu yapabilirsin
-
#include <iostream>
using namespace std;
void fonksiyon(int **array, int size)
{
for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
cout<<array[i][j]<<" ";
cout<<endl;
}
}
int main()
{
int size;
cout << "Array boyutunu giriniz:"; //
cin >> size;
int **array=new int*[size];
for(int i=0;i<size;i++)
array[i]=new int[size];
for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
array[i][j]=size;
}
fonksiyon(array, size);
}işaretçilerle ilgili örnek
splintercell tarafından 19/Ağu/13 17:42 tarihinde düzenlenmiştir -
Performans düşüklüğü önemli değilse string olarak tut şöyle ayır
"1.veri#2.veri"
sonra da strtok vb. ile # den ayırıp kullan.
Diğer türlü işaretçi ile olabilir.
-
malloc(sizeof(size)) gibi bişey yemiyor mu
-
int [] dizi;
dizi = new int [size];
bu şekilde yapabilirsin herhalde. Önce tanımlayıp sonra initialize edebilirsin diye düşünüyorum.
edit ayrıca neden öyle bir fonksiyon tanımı yapıyorsun ki ?
int array[][size] ı parametre olarak gönderme işlemini hiç bir programlama dilinde yapamazsın.