私は関数内で配列のサイズを動的に探したいので、sizeof演算子を使用しました。しかし、私は予期せぬ結果を得ました。 ここには、私がしたいことを示す1つのデモプログラムがあります。sizeof演算子の問題
//------------------------------------------------------------------------------------------
#include <iostream>
void getSize(int *S1){
int S_size = sizeof S1/sizeof(int);
std::cout<<"array size(in function):"<<S_size<<std::endl;
}
int main(){
int S[]={1,2,3,2,5,6,25,1,6,21,121,36,1,31,1,31,1,661,6};
getSize(S);
std::cout<<"array size:"<<sizeof S/sizeof(int)<<std::endl;
return 0;
}
//------------------------------------------------------------------------------------------
コンパイルコマンド:G ++ demo1.cc -o DEMO1 {Fedoraの12}
出力:
array size(in function):2
array size:19
なぜこれが起こっている、説明してください。 この問題を解決するには何ができるのですか?
[this](http://stackoverflow.com/questions/1975128/sizeof-an-array-in-the-c-programming-language/1975133#1975133)回答と[this](http://質問.2384107/magic-arguments-in-function-templates)質問。 –
配列がポインタでない理由の良い例です。テンプレートの – Oystein