2011-03-30 26 views

答えて

10

いいえ、違いはありません。あなたが最初の1に間接参照値になります

-1

...

+0

私は.......だと思います –

+0

うまくいけば、2番目のものを逆参照することができます。 '*(array + 3)'は 'pointer [3]'と同じです。 – BlackBear

+0

さて、私は2つの関数を持っています: int function(int arr []); int function2(int * arr); テスト用に、私はこの配列を持っています: int arr [5] = {1,1,1,1,1}; Visual Studio 2010でこれを行うことができます: function(arr); function2(arr); function2に動的に割り当てられた配列を渡さなかったにもかかわらず、それでも私はそれを実行できました。どうしてこれなの?また、ベンチマークを実行すると、どちらの関数も同じ結果になるので、逆参照が行われても無視できます。 – leetNightshade

1

セマンティックは同じですが、外部プログラマのために、それは簡単に理解し即時である:第二の機能は、引数として配列を取ります。それは最初のものと同じように即時になることはできませんでした。

3

Cコンパイラには違いはありません。しかし、コードを読み込むプログラマには違いがあります。

ここで、ARRが(おそらく関数からの結果を戻すための)整数へのポインタである:ここ

foo(int* arr) {} 

、ARRのリストを渡すために、おそらく(配列内の最初の整数へのポインタであります関数の戻り値の型を指定すると、関数の戻り値の型を指定すると便利です。

関連する問題