C++配列参照
ネットユーザー8:
ネットユーザー1:
ネットユーザー2:
ネットユーザー3:
ネットユーザー4:
配列参照は配列の階層化を回避します(VCKBASEC++フォーラムに掲載されています).
[hpho]のテンプレート関数に啓発され、この文を特筆したのは、同じように残念だ.配列の階層化は嫌なことで、これはC言語では解決できない問題で、まずコードを見て、何が「配列の階層化」なのかを理解します.
#include using namespace std;
void Test(char array[20]){cout<int main( void ) { char array[20] = { 0 }; cout << sizeof(array) << endl;//出力20 Test(array);}
なぜ同じarray出力20出力4を宣言したのですか?これは、void Test(char array[20])のarrayがステップダウンされたためであり、void Test(char array[20])はvoid Test(char array[])に等しく、void Test(char*const array)にも等しく、BT(冗談)であればvoid Test(char array[999])にも等しい.つまりvoid Test(char array[20]){cout<では、C言語でこの問題をどのように解決しますか?仕方がない.a:char arrayが1つしかない構造を作り、char arrayの代わりにこの構造ポインタを使用する[20].これは煩雑な方法であり、直観的ではないことがわかる.b:Test内部での使用_msizeでarray長を計算します.これはさらにだめです.まず、コンパイル期間ではなく、エラーの発見を実行期間に延期します.次に_msize長/要素サイズ>=array長、すなわちnew char[19]とnew array[20]の割り当ての大きさは同じであり、これによりプログラムのクラッシュを招くことはないが、演算結果は正しくない.
[hpho]に感謝します.その啓発を受けて、C++にはCにはない「引用」がありますが、配列参照はどのように明記されていますか.いくつかの実験を経て
#include using namespace std;
void Test(char(&array)[20])/char*p[20]とchar(*p)[20]の違いに似ていますか?{ cout << sizeof(array) << endl; }
int main( void ) { char array[20] = { 0 }; cout << sizeof(array) << endl; Test( array ); }
ネットユーザー5:
配列参照効率はポインタに相当し、より多くの情報が含まれているのではないでしょうか.私は少し前にテンプレート関数を見たことがあります.周星の方法と同じです.template void Test(T (&array)[N]) { cout<
ネットユーザー6:
vectorを使うと、コンパイラはいろいろなことをしますが、もっと直感的です!サポートvector
ネットユーザー7:
, 。
int (&b)[3] = a;
b ,b 。
b a.
int& b[3];
b , 。
int& b[3];
C++ , 。
。
:
int a = b;
a b , 。
int &a = b;
, a 。
ネットユーザー1:
《 》 , :
void function(int &array[5])
{
//…………
}
void main()
{
int arr[5]={1,2,3,4,5};
function(arr);
}
?? ~~
ネットユーザー2:
void function(int &array[5])
&, , C++ , :
void function(int *&array) , ,
ネットユーザー3:
void function(int (&array)[5])
ネットユーザー4:
配列参照は配列の階層化を回避します(VCKBASEC++フォーラムに掲載されています).
[hpho]のテンプレート関数に啓発され、この文を特筆したのは、同じように残念だ.配列の階層化は嫌なことで、これはC言語では解決できない問題で、まずコードを見て、何が「配列の階層化」なのかを理解します.
#include
void Test(char array[20]){cout<
なぜ同じarray出力20出力4を宣言したのですか?これは、void Test(char array[20])のarrayがステップダウンされたためであり、void Test(char array[20])はvoid Test(char array[])に等しく、void Test(char*const array)にも等しく、BT(冗談)であればvoid Test(char array[999])にも等しい.つまりvoid Test(char array[20]){cout<
[hpho]に感謝します.その啓発を受けて、C++にはCにはない「引用」がありますが、配列参照はどのように明記されていますか.いくつかの実験を経て
#include
void Test(char(&array)[20])/char*p[20]とchar(*p)[20]の違いに似ていますか?{ cout << sizeof(array) << endl; }
int main( void ) { char array[20] = { 0 }; cout << sizeof(array) << endl; Test( array ); }
ネットユーザー5:
配列参照効率はポインタに相当し、より多くの情報が含まれているのではないでしょうか.私は少し前にテンプレート関数を見たことがあります.周星の方法と同じです.template
ネットユーザー6:
vectorを使うと、コンパイラはいろいろなことをしますが、もっと直感的です!サポートvector
ネットユーザー7:
C++ 。 , 。
http://blog.csdn.net/wfwd/archive/2006/05/30/763551.aspx
int a[3] ={10,20,30};
int (&b)[3] = a;
, b a ,b a ?