尝试将二维数组传递给函数并出现编译器错误
Trying to pass 2D array to function and getting a compiler error
我是 C/C++ 初学者,正在尝试构建一个简单的脚本。我在 Arduino 上 运行 这个。
#include <Arduino.h>
int pin_locations[3][3] = {
{8, 5, 4},
{9, 6, 3},
{10, 7, 2}
};
void setup() {
for (int i=0; i<3; ++i) {
for (int j=0; j<3; ++j) {
pinMode(pin_locations[i][j], OUTPUT);
}
}
}
void convert_drawing_to_LEDS(int drawing[]) {
for (int i=0; i<3; ++i) {
for (int j=0; j<3; ++j) {
if (drawing[i][j] == 1) {
digitalWrite(pin_locations[i][j], HIGH);
}
}
}
}
void loop() {
// drawing
int my_drawing[3][3] = {
{1, 1, 1},
{1, 0, 1},
{1, 1, 1}
};
convert_drawing_to_LEDS(my_drawing);
}
但是它给了我两个错误:
src/main.cpp: In function 'void convert_drawing_to_LEDS(int*)':
src/main.cpp:31:23: error: invalid types 'int[int]' for array
subscript
if (drawing[i][j] == 1) {
^ src/main.cpp: In function 'void loop()': src/main.cpp:46:37: error: cannot convert 'int ()[3]' to 'int' for
argument '1' to 'void convert_drawing_to_LEDS(int*)'
convert_drawing_to_LEDS(my_drawing);
^ Compiling .pio/build/uno/FrameworkArduino/WInterrupts.c.o
*** [.pio/build/uno/src/main.cpp.o] Error
谁能帮帮我?
谢谢!
您已声明 convert_drawing_to_LEDS
取一个 int []
,它不是二维数组。这会导致参数与其在函数中的使用方式不匹配,以及传入的实际参数与函数期望的参数不匹配。
你反而想要:
void convert_drawing_to_LEDS(int drawing[3][3]) {
我是 C/C++ 初学者,正在尝试构建一个简单的脚本。我在 Arduino 上 运行 这个。
#include <Arduino.h>
int pin_locations[3][3] = {
{8, 5, 4},
{9, 6, 3},
{10, 7, 2}
};
void setup() {
for (int i=0; i<3; ++i) {
for (int j=0; j<3; ++j) {
pinMode(pin_locations[i][j], OUTPUT);
}
}
}
void convert_drawing_to_LEDS(int drawing[]) {
for (int i=0; i<3; ++i) {
for (int j=0; j<3; ++j) {
if (drawing[i][j] == 1) {
digitalWrite(pin_locations[i][j], HIGH);
}
}
}
}
void loop() {
// drawing
int my_drawing[3][3] = {
{1, 1, 1},
{1, 0, 1},
{1, 1, 1}
};
convert_drawing_to_LEDS(my_drawing);
}
但是它给了我两个错误:
src/main.cpp: In function 'void convert_drawing_to_LEDS(int*)': src/main.cpp:31:23: error: invalid types 'int[int]' for array subscript if (drawing[i][j] == 1) { ^ src/main.cpp: In function 'void loop()': src/main.cpp:46:37: error: cannot convert 'int ()[3]' to 'int' for argument '1' to 'void convert_drawing_to_LEDS(int*)'
convert_drawing_to_LEDS(my_drawing); ^ Compiling .pio/build/uno/FrameworkArduino/WInterrupts.c.o *** [.pio/build/uno/src/main.cpp.o] Error
谁能帮帮我?
谢谢!
您已声明 convert_drawing_to_LEDS
取一个 int []
,它不是二维数组。这会导致参数与其在函数中的使用方式不匹配,以及传入的实际参数与函数期望的参数不匹配。
你反而想要:
void convert_drawing_to_LEDS(int drawing[3][3]) {