0

我不知道如何在子功能中使用“kule”。我标记为* **!!!*** 在代码中的错误。

我必须在函数中写入哪个参数?

void coz(结构??????,int磁盘,int * kaynak,int * yardimci,int * hedef)


#define disk_sayisi 5

typedef struct Platform {
    int bar1[disk_sayisi];
    int bar2[disk_sayisi];
    int bar3[disk_sayisi];
} platform;

void kuleleri_ekrana_yaz(platform y);
void disk_no_ata(platform *y);
void disk_tasi(platform *y, int disk);

void coz(int disk, int* kaynak, int* yardimci, int* hedef) {
    if (disk > 0) {
        printf("Kaynak:\t%d -> Hedef\t%d\n", kaynak, hedef);
*****!!!******  disk_tasi(kule, disk);
*****!!!******  kuleleri_ekrana_yaz(*kule);
    }
}

int main() {
    platform *kule;
    kule = (platform*) malloc(sizeof(platform));
    disk_no_ata(kule);
    kuleleri_ekrana_yaz(*kule);
    coz(disk, kaynak, yardimci, hedef);
    return 0;
}
4

2 回答 2

1

kule是本地函数main,所以你不能在coz. 如果您想在那里使用它,请执行以下任一操作:

  1. (不推荐:)kule在外部声明main,并确保在调用之前为其分配一个有效值coz

    platform *kule;  // removed from `main` to global scope
    
    void coz(…) { … }
    
    int main() {
        kule = …;
        coz(…);
        …
    }
    
  2. 推荐:)将其作为参数传递coz(通过附加参数):

    void coz(int disk, int* kaynak, int* yardimci, int* hedef, platform *kule) { … }
                                                          // ^^^^^^^^^^^^^^^^
    int main() {                                          // additional parameter
        platform *kule = …;
        coz(…, kule);
        …
    }
    
于 2013-04-07T12:20:20.240 回答
0

您需要将您的 to 传递kulecoz()

void coz(int disk, int* kaynak, int* yardimci, int* hedef, platform* kule) {
    if (disk > 0) {
        printf("Kaynak:\t%d -> Hedef\t%d\n", kaynak, hedef);
        disk_tasi(kule, disk);
        kuleleri_ekrana_yaz(*kule);
    }
}

int main() {
    platform *kule;
    kule = (platform*) malloc(sizeof(platform));
    disk_no_ata(kule);
    kuleleri_ekrana_yaz(*kule);
    coz(disk, kaynak, yardimci, hedef, kule);
    return 0;
}
于 2013-04-07T12:20:32.830 回答