1
我要創建一個矩陣,只有一個指針操縱它如何正確使用多維數組中的指針?
我的代碼:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void Matrix();
int Fun(int *A, int n, int key);
int main()
{
Matrix();
return 0;
}
void Matrix()
{
int Nel, Larray, i, j, k, a, c, b, Nf;
printf("Num of elements: ");
scanf("%d", &Nel);
int A[Nel][Nel];
srand(time(NULL));
for(b=0;b<Nel;b++)
{
for(c=0;c<Nel;c++)
{
A[b][c] = rand() % 100 + 1;
}
}
printf("\n");
for(b=0;b<Nel;b++)
{
for(c=0;c<Nel;c++)
{
printf("%d\t",A[b][c]);
}
printf("\n");
}
printf("\n\n");
printf("Num to find? ");
scanf("%d", &Nf);
Fun(*A, Nel, Nf);
}//end
int Fun(int *A, int n, int key)
{
//just to see if it works
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t",A);
}
printf("\n");
}
}
在函數fun,給我一個錯誤
printf("%d\t",A); subscripted value is neither array nor pointer nor vector
我只有用一個指向矩陣的指針。 你可以expalin多維數組中的指針算術? Thx
這是很清楚,但我怎麼能解決我的問題?用2個指針我沒有問題,但我只需要使用一個指針! – HugoB
用'printf(「%d \ t」,*(A +(i * n + j)))'或用'printf(「%d \ t」)替換'printf(「%d \ t」,A) ,A [i * n + j])'並且標記答案已解決,如果有幫助的話。 – tarashypka