通过指针传递矩阵时的变形值

时间:2019-04-26 01:11:57

标签: c pointers

我正在使用一种算法,需要在更大尺寸的2D矩阵中复制2D矩阵。 当我在同一主堆栈中工作时,效果很好,但是当我将复制的矩阵的指针传递给另一个函数时,值被破坏了。

产生问题的步骤: 1-将大小为x的2D正方形矩阵复制到大小为y(y> x)的另一个正方形矩阵。 2-将复制的矩阵的指针传递给函数。 3-在函数内部打印矩阵。

结果将是损坏的值。

int main(void) {
    int tab[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int tab2[5][5];
    int size = 3;

    // Coppying tab to tab2
    for(int i = 0; i<size; i++)
    {
        for(int j = 0; j<size; j++)
        {
            tab2[i][j] = tab[i][j];
        }
    }


    // printing tab2 using myPring Function
    myPrint(tab2, size);
    return 0;
}

void myPrint (int* tab, int size)
{
    for(int i = 0; i<size; i++)
    {
        printf("|");
        for(int j = 0; j<size; j++)
        {
           printf("tab[%d][%d] => %d |", i, j,  *((tab+i*size) + j)  );
        }
        printf("\n");
    }
    printf("____________________________________________\n");
}

1 个答案:

答案 0 :(得分:0)

Public Sub New() Dim site As String = File.ReadAllText("webstore.shd") Dim id As String = File.ReadAllText("ID.shd") InitializeComponent() Dim settings As New CefSettings() CefSharp.Cef.Initialize(settings) browser = New ChromiumWebBrowser(site) With { .Dock = DockStyle.Fill } Panel1.Controls.Add(browser) If Panel1.Contains(id) Then ' I am stuck right here. msgbox("Succes") Else msgbox("Nope") End If End Sub 使用*((tab+i*size) + j)(三个)计算指针。但是,尽管size的每一行中只存储了三个值,但实际上每行中有五个元素。