iT邦幫忙

0

Arduino sizeof問題

最近做到做到函式的部分,突然突發奇想想到一種寫法,可是怎麼試都不成功,所以來到版上問各位大大,先附程式~~~

int aaa[4] = {1, 2, 3, 4};
void setup() {
  Serial.begin(9600);
}

void loop() {
  test(aaa);
}

void test(int a[]) {
  for (int i = 0; i < sizeof(a); i++) {
    Serial.print(a[i]);
    Serial.print(" ");
  }
  Serial.println("");
}

我的理想是顯示1234,可是顯示的卻是12而已,我有用SerialPort看過,sizeof(a)出來的數值一直是2,我有去網路上找過一些C的資料,我這種寫法好像是可以成功的,可是我在Arduino上就做不出來,請各位大大幫幫忙~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
wrxue
iT邦好手 1 級 ‧ 2021-10-25 19:04:31

test 函式中 sizeof(a)int* 的 size,而不是 array 的 size。
若您想知道 array 的 size,只能從外部傳遞

void test(int a[], int len) {
    ...
}
void loop() {
  test(aaa, sizeof(aaa)/sizeof(int));
}

了解,感謝解答!!!

wrxue iT邦好手 1 級 ‧ 2021-10-25 21:34:49 檢舉

若有解決您的問題,歡迎選出最佳解答結束這個問題哦/images/emoticon/emoticon07.gif

我要發表回答

立即登入回答