現在、Arduinoでプログラムをしています。
プログラムを作る上で、関数の引数として配列データを与え、関数内でその配列の要素数を求める必要があるのですが、どうもうまく動作しません。
sizeofで配列の要素数を求める
Arduino
1unsigned int data[] = {3930,9913,336}; 2 3void setup() { 4 // put your setup code here, to run once: 5 Serial.begin(9600); 6 7} 8 9void loop() { 10 int dataSize = sizeof data / sizeof(data[0]); 11 Serial.println(dataSize); 12}
上記ソースを実行するとdataSizeは3となっていて、正しく実行できています。
配列を引数として、関数内で配列の要素数を求める
Arduino
1unsigned int data[] = {3930,9913,336}; 2 3void setup() { 4 // put your setup code here, to run once: 5 Serial.begin(9600); 6 7} 8 9void func(unsigned int *data_a){ 10 int dataSize = sizeof data_a / sizeof(data_a[0]); 11 12 Serial.println(data_a[0]); 13 Serial.println(data_a[1]); 14 Serial.println(data_a[2]); 15 16 Serial.println(sizeof data_a); 17 18 19 Serial.println(dataSize); 20} 21 22void loop() { 23 func(data); 24}
上記ソースを実行するとdatasizeが1となってしまいます。
道中で配列の中身、sizeof data_aを確認したところ、配列の中身は正しく渡せているようなのですが、sizeof data_aが2となっていました。(正しく実行できていた時は6になっています)
なぜ引数として配列を渡すと、sizeofがこのような動作をするのでしょうか。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/18 06:54