PDA

Tam Sürümünü Görmek İçin : çok boyutlu diziler hakkında


ankakusu
22/10/2007, 09:47
Merhaba arkadaşlar,

bizim normalde şöyle bir array
tanımlıyor olabilmemiz gerekmez mi?

int arr[][3];
// arr[1][1] arr[1][2] arr[1][3]
// arr[2][1] arr[2][2] arr[2][3]
// arr[3][1] arr[3][2] arr[3][3]
// . . .
// . . .
// . . .
//arr[m][1] arr[m][2] arr[m][3]

gibi bir array yaratamıyor muyduk.
cpp'da böyle bir özellik var ama
bende hata veriyor.
kodum alttaki gibi :

#include "stdafx.h"
#include <iostream>
using namespace std;

#include <cstring>

int main()
{
int str[][4];
return 0; // indicates successful termination
} // end main

verdiği hata şudur :

--------------------Configuration: prj - Win32 Debug--------------------
Compiling...
prj.cpp
C:\Temp\prj\prj.cpp(12) : error C2133: 'str' : unknown size
Error executing cl.exe.

prj.exe - 1 error(s), 0 warning(s)

bilgilerinize...


golgepapaz
22/10/2007, 10:07
olmaz cunku, derleyici str icin kod yaratirken str'nin boyutunu bilmek zorunda, ancak eger
arrayi bir fonksiyona gecerken ilk elemanin adresi gectiginden orada soyledigini formu kullanabilirsin...

ankakusu
27/10/2007, 11:54
Anladım sanırım.

sadece ilk adresileri yolluyoruz fonksiyona
ama ilklendirme yapmıyoruz.

1) ama ilklendirme yapıyorsak ve şöyle bir ifade
kullanırsak:

int var1[][3];

verdiği hata: error C2133: 'var1' : unknown size


2) ifademiz aşağıdaki gibiyse:

int var1[3][];

verdiği hata: error C2087: '<Unknown>' : missing subscript

3) int var1[4][] = {1 , 3};

verdiği hata: error C2087: '<Unknown>' : missing subscript

4) int var1[][3] = {1 , 3};

ise problem yok :)