私はそれらの記事を読みましたhttp://eli.thegreenplace.net/2010/01/11/pointers-to-arrays-in-c/ http://eli.thegreenplace.net/2010/04/06/pointers- vs-arrays-in-c-part-2d/
何が起こるかについて、もう少し説明が欲しい。
int joe[] = {1, 2, 3, 4};
void test(int (*p)[4])
これは、配列とは異なる配列へのポインターです。
void test(int *d);
これは、渡された配列の最初の要素へのポインター、または別のポインターのコピーになります。僕にできる?
*p = joe //I guess not, I'm obtaining the array passed, and I'm trying to reassign it (which can't be done)
d = joe //I guess not, but I would like to know what would happen to d
*d = joe //Same as above
d = &joe //I'm giving to d the address of joe, what will it be?
どれが正しくてどれが間違っているか、そしてその理由。
2 次元配列 (実際には単なる 1 次元配列) に関する記事で、彼は次のように書いています。
void bar(int arr[2][3], int m, int n)
void bar(int arr[][3], int m, int n)
void bar(int (*arr)[3], int m, int n)
はすべて正しいです。
1) 質問:
void bar(int arr[][3], int m, int n)
void bar(int arr*[3], int m, int n)
同じだ?そうでない場合、それらの違いは何ですか?
2) 質問:
void bar(int arr[][3], int m, int n)
void bar(int (*arr)[3], int m, int n)
それらの違いは何ですか?なぜ両方が機能するのですか?
背後で何が起こっているのかについて詳細な説明をいただければ幸いです。質問が明確であることを願っています。