2011-10-21 10 views
1

私はまだdoublepointersについて理解しようとしています。intメインのダブルポインタ

私はへのパラメータとして使用する場合、一方が他方

int main(int argc, char **argv) //Double pointer 

int main(int argc, char *argv[]) // Single 
+0

このテキストはポインタについて説明し、私を大いに助けてくれました。面白いかもしれない? http://cslibrary.stanford.edu/102/PointersAndMemory.pdf – marko

+0

[Cではchar ** argvまたはchar * argv \ [\]を使用すべきですか?](http://stackoverflow.com/)質問/ 779910/should-i-use-char-argv-or-char-argv-in-c) – sidyll

答えて

3

とは異なる方法で何をするかわかりませんが、通常は

void foo(char **ptr) 
{ 
// blah 
} 

int main(void) 
{ 
    char *ptr; 
    foo(&ptr); 
} 

のように、ほとんどの場合に使用されているか、二重ポインタを知っています配列指定子[]は、ポインタとまったく同じです。 mainの2つの宣言は、実際には同じです。

2つの異なる構文が異なることを意味する場合がありますが、これはその1つではありません。

この場合、ポインタの配列があることを意味します。各ポインタは文字の配列を指します。 argv[0]は、私はあなたの痛みを感じるなど

2

argv[1]が第二char*文字列へのポインタで、最初char*文字列へのポインタです!私はそれらをまったく同じように扱うべきだと自分自身に確信させるのに私は長い時間がかかりました。

argv [1]は最初のパラメータを指し、argv [argc-1]は最後のパラメータを指します。はい、すべてのあなたの狙撃兵、それはargc> 0なら真です。

これは私の公式で、私はそれに固執しています。

関連する問題