我有一個問題,我認爲可能有一個簡單的答案,但我沒有在任何地方找到任何文檔來確認我的懷疑。數組 - 錯誤:賦值中的不兼容類型
我的程序是乘以兩個矩形矩陣,整個代碼有點長,所以我只是粘貼下面的相關部分。當我編譯我的代碼時,我不斷收到「錯誤:賦值中的不兼容類型」消息。我試圖將子矩陣suba,subb,subc分配給a,b和c的相應部分。這是因爲我使用變量v和w int行28 - 32?另外,爲了確保我有正確的概念,如果我將矩陣的左上角分配給「子矩陣」,那麼我只是分配一個指針(如subb)以在大的指定位置開始矩陣,對嗎?
在此先感謝您的幫助!這是非常appreiciated
struct threads
{
pthread_t id; //The thread id to use in functions
int n; //size of block
float **suba; //Sub-matrix a
float **subb; //Sub-matrix b
float **subc; //Sub-matrix c
};
int main(int argc, char* argv[ ])
{
int n; // dimension of the matrix
int p; // number of threads in the program
float *sa, *sb, *sc; // storage for matrix A, B, and C
float **a, **b, **c; // 2-d array to access matrix A, B, and C
int i, j;
struct threads* t;
t = (struct threads*) malloc(p * sizeof(struct threads));
int x = -1;
int z;
for(z = 0; z < p; z++)
{
t[ z ].n = n/sqrt(p);
if(fmod(z, sqrt(p)) == 0)
x++;
int w = (int)(x * n/sqrt(p));
int v = (int)(fmod(z, sqrt(p)) * n/sqrt(p));
t[z].suba = a[ w ][ v ];
t[z].subb = b[ w ][ v ];
t[z].subc = c[ w ][ v ];
//pthread_create(&t[ z ].id, 0, threadWork, &t[ z ]);
}
return 0;
}
閱讀第6(http://www.c-faq.com)。 –