Created
June 25, 2017 07:08
-
-
Save JarvusChen/9bcc28731005e392a6af3f9753f7f817 to your computer and use it in GitHub Desktop.
Using arrays as parameters and return values
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/************************************************************** | |
25, Jun., 2017 | |
Copyright by Jarvus Chen. All Rights Reserved. | |
www.jarvus.net | |
************************************************************** */ | |
void setup() { | |
Serial.begin(9600); | |
Serial.println("Start"); | |
} | |
void loop() { | |
// Case A: multiple input value / sigle output value | |
int ansA = caseA(1, 2); | |
Serial.println("For Case A:"); | |
Serial.println(ansA); | |
// Case B: multiple input value / multiple output value ( single output array ) | |
int* ansB = new int[2]; | |
ansB = caseB(1, 2); | |
Serial.println("For Case B:"); | |
Serial.println(ansB[0]); | |
Serial.println(ansB[1]); | |
delete ansB; | |
// Case C: single input array / single output array | |
int dataC[2] = {1, 2}; | |
int* ansC = new int[2]; | |
ansC = caseC(&dataC[0]); | |
Serial.println("For Case C:"); | |
Serial.println(ansC[0]); | |
Serial.println(ansC[1]); | |
delete ansC; | |
// Case D: multiple input 2D array / multiple output 2D array | |
int dataD1[2][2] = { {1, 2},{3, 4} }; | |
int dataD2[2][2] = { {4, 3},{2, 1} }; | |
int ansD1[2][2] = { {0, 0},{0, 0} }; | |
int ansD2[2][2] = { {0, 0},{0, 0} }; | |
caseD(&dataD1[0], &dataD2[0], &ansD1[0], &ansD2[0]); | |
Serial.println("For Case D:"); | |
Serial.print(ansD1[0][0]); | |
Serial.println(ansD1[0][1]); | |
Serial.print(ansD1[1][0]); | |
Serial.println(ansD1[1][1]); | |
Serial.print(ansD2[0][0]); | |
Serial.println(ansD2[0][1]); | |
Serial.print(ansD2[1][0]); | |
Serial.println(ansD2[1][1]); | |
delay(5000); | |
} | |
// Case A: multiple input value / sigle output value | |
int caseA(int a, int b){ | |
return a+b; | |
} | |
// Case B: multiple input value / multiple output value ( single output array ) | |
int* caseB(int a, int b){ | |
int* ans = new int[2]; | |
ans[0] = a+b; | |
ans[1] = a-b; | |
return ans; | |
} | |
// Case C: single input array / single output array | |
int* caseC(int a[]){ | |
int* ans = new int[2]; | |
ans[0] = a[0]+a[1]; | |
ans[1] = a[0]-a[1]; | |
return ans; | |
} | |
// Case D: multiple input 2D array / multiple output 2D array | |
void caseD(int a[][2], int b[][2], int ans1[][2], int ans2[][2]){ | |
ans1[0][0] = a[0][0]+b[0][0]; | |
ans1[0][1] = a[0][1]+b[0][1]; | |
ans1[1][0] = a[1][0]+b[1][0]; | |
ans1[1][1] = a[1][1]+b[1][1]; | |
ans2[0][0] = a[0][0]*b[0][0]; | |
ans2[0][1] = a[0][1]*b[0][1]; | |
ans2[1][0] = a[1][0]*b[1][0]; | |
ans2[1][1] = a[1][1]*b[1][1]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment