vermeden C dizisi bildirme:bu gibi bir dizi tanımlarken boyutunu
int array[][] = {
{1,2,3},
{4,5,6}};
Şu hatayı alıyorum: "Dizi tipi vardır tamamlanmamış eleman türü"
neler oluyor ??
vermeden C dizisi bildirme:bu gibi bir dizi tanımlarken boyutunu
int array[][] = {
{1,2,3},
{4,5,6}};
Şu hatayı alıyorum: "Dizi tipi vardır tamamlanmamış eleman türü"
neler oluyor ??
içinde
örneğin; Derleyicinin belirlemesi için yalnızca bir boyut bırakılabilir ve ilk boyut olmalıdır.
Sen yazabilirsiniz:
int d1[] = { ... };
int d2[][2] = { ... };
int d3[][2][3] = { ... };
Vb
En azından dışındaki tüm boyutlara bunu söylemelisiniz. Durumda bir N-boyutlu bir dizilim içinde (N> 0) kullanarak, N-1 boyutların büyüklüklerini tanımlamak gerekir ile
int array[][3] = {
{1,2,3},
{4,5,6}};
Doğru, en dışta değil, en dışta belirtmelisin, değil mi? – falstro
Doğru n-1 en küçük boyuta ihtiyacınız var. –
En yüksek hariç tüm boyutlarını belirtmek gerekir. Bunun nedeni, derleyicinin kendi küçük dizilerine işaret eden bir dizi işaretçiden farklı olarak büyük bir bellek bloğu tahsis etmesidir. Başka bir deyişle,
int array[][3][4] = ...;
(burada beyan Ancak birçok 3x4 diziler) boyutunda 3 * 4 * ait bir bitişik bellek bölgesini ayıracak. Böylece daha sonra kodunuzda, hafızada 69 yazmak için nerede bulmak için
array[1][2][3] = 69;
yazarken, bu diziye almak için daha sonra 12 * sizeof (int) ileri atlar, adres (dizi) başlar [ 1], artı 2 * 4 * sizeof (int) dizisine [1] [2], artı 3 * sizeof (int) dizisine son olarak [1] [2] [3] dizisinin başlangıcına ulaşır.
int ***array = new int**[n];
for(i=0; i<n; i++)
{
array[i] = new int * [3];
for(j=0; j<4; j++)
array[i][j] = new int[4];
}
(benim dizimi kesin değilse ben C böyle bir şey kodlamak için yaşadım süre beri üzgün ... been), örneğin, yazı ile karşılaştırın. Bu örnekte, dizi n * sizeof (int **) bayt uzunluğunda bir kod bloğuna işaret eder. Bu dizinin her elemanı, 3 * sizeof (int *) bayt uzunluğundaki başka bir diziyi işaret eder. Bu dizilerin her bir öğesi, 4 * boyutunun (int) bayt uzunluğundaki başka bir diziyi işaret eder. Bu durumda, [1] [2] [3] dizisini hesaplamak yerine, adres (dizi + bir şey) yerine, yazılmadan önce, bellekte birkaç farklı işaretçiyi takip etmelidir. Yazmadan önce, 69.
Kaç şanssızlık numarası 13 için üzgünüz, ama bu muazzam yardımcı oldu :) –