使用指针查找矩阵的转置(我的代码出什么问题了?)

时间:2018-11-06 04:42:14

标签: c pointers

您能告诉我以下代码中的逻辑有什么问题吗?我正在尝试对矩阵进行转置,但是输出却大为错误。例如,我在主函数中启动一个矩阵:

int a[2][2]; 
a[0][0]=1;
a[0][1]=2; 
a[1][0]=3; 
a[1][1]=4; 
int *a1;

a1=&a[0][0];

然后做

transpose(a1,2,2); 

输出为:[16 , 16][3 , 16]。但是输出应该是[1 , 3][2 , 4]

int* transpose(int *a,int m,int n)
{
    int i,j;
    int tmp;
    for(i=0;i<m;i++)
    {
            for(j=0;j<n;j++)
            {
                    *(a + i*m + j) = tmp;
                    *(a + i*m + j) = *(a + i + j*m);
                    *(a + i + j*m) = tmp;
            }
    }
    return a;
}

1 个答案:

答案 0 :(得分:2)

您在交换中的第一个分配是错误的方法,因此您正在处理未分配的bool IsValidEmail(string email) { try { email = email.Trim(); var addr = new System.Net.Mail.MailAddress(email); return addr.Address == email; } catch { return false; } } 变量中的值。您的交换代码应为

tmp