没有 printf 核心,该段就被违反了

问题描述 投票:0回答:1

如果我不放置 printf(" "); 我有以下代码段被违反了,否则它工作正常

void dispersion(float ***plancha_ptr, float ***copiaPlancha_ptr) {
    float **plancha = *plancha_ptr;
    float **copiaPlancha = *copiaPlancha_ptr;     

    //Calculo del borde absorbente(superior) y reflectante (inferior)
    for(int i = 0; i <= SIZE_Y+1; i++) {
        plancha[0][i] = 25;
        plancha[SIZE_X+1][i] = plancha[SIZE_X][i];  
    }

    //Calculo de los bordes reflectantes (laterales)
    for(int i = 0; i <= SIZE_X+1; i++){
        plancha[i][0] = plancha[i][1];
        plancha[i][SIZE_Y+1] = plancha[i][SIZE_Y];      
    }
    //Calculo de la dispersion
    for(int j = 1; j < SIZE_X+1; j++)
        for(int k = 1; k < SIZE_Y+1; k++)
            copiaPlancha[j][k] = (plancha[j-1][k-1] + 
                                  plancha[j-1][k] +
                                  plancha[j-1][k+1] + 
                                  plancha[j][k-1] +
                                  plancha[j][k] + 
                                  plancha[j][k+1] +
                                  plancha[j+1][k-1] + 
                                  plancha[j+1][k] +
                                  plancha[j+1][k+1]) / 9;
            
    //RESTAURAR PTO DE CALOR
    copiaPlancha[X_ORIGIN][Y_ORIGIN] = TEMP;
    //INTERCAMBIO DE PUNTEROS PARA EVITAR COPIA DE MATRIZ   

    float **p;
    **p = ***plancha_ptr;
    *plancha_ptr = *copiaPlancha_ptr;
    //No Tocar, hay que imprimir por pantalla o no funciona
    // printf(" ");
    //***copiaPlancha_ptr = **p;
    return;
}

它不起作用,但如果我取消注释

printf
,它就可以正常工作。我需要帮助。

c pointers segmentation-fault
1个回答
3
投票

尝试更改这些行

float **p;
**p = ***plancha_ptr;

float **p;
p = *plancha_ptr;

您应该先初始化

p
,然后才能将其取消引用为
**p

© www.soinside.com 2019 - 2024. All rights reserved.