Skip to content

Instantly share code, notes, and snippets.

@JarvusChen
Created June 25, 2017 07:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JarvusChen/9bcc28731005e392a6af3f9753f7f817 to your computer and use it in GitHub Desktop.
Save JarvusChen/9bcc28731005e392a6af3f9753f7f817 to your computer and use it in GitHub Desktop.
Using arrays as parameters and return values
/**************************************************************
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