は、次のコードスニペットを考えてみましょう。ポインタへのポインタと等しいポインタへのポインタ。ありえない?
#include <iostream>
using namespace std;
int main()
{
char *sr[] = {"manipuri","konkani","punjabi","hindi","telugu","maithili","odia"};
char **pt[] = {sr+2,sr+4,sr+3,sr+1,sr+6}, ***r;
r = pt;
for(int i=0;i<4;i++) ++r;
cout << **r+3;
return 0;
}
は、私はそれを理解する方法です。 'sr'は文字配列へのポインタです。その値は "マニュリ"の "m"のアドレスです。 'pt'は、文字配列のポインタへのポインタの配列です。値は他のポインタへのアドレスの配列です。 'r'は、文字のポインタへのポインタへの単一のポインタです。
'pt'を 'r'にどのように割り当てることが可能ですか?これらは完全に異なるデータ型です。 1つの場合、 'r'は、1文字のポインタを指すポインタを指すポインタを指します。一方、ptは、ARRAYの文字を指すポインタを指すARRAYです。
これはどのように可能ですか?
http://wiki.c2.com/?ThreeStarProgrammer –
'for(int i = 0; i <4; i ++){++ r;}を書くことを意味しましたか? cout << ** r + 3; } '? – user0042
ポインタと配列は異なる型ですが、配列は配列の先頭へのポインタに簡単に減衰します。 'pt'を' r'に代入すると 'pt'の最初の要素(' char *** 'になる)を' r'に代入します。 –