Two-Dimensional Arrays Example: 1 int scores[4][140]; /* 4 classes, up to 140 students each */ 2 int row, col, x, y; 3 for (row = 0; row < 4; row++) 4 for (col = 0; col < 140; col++) 5 score[row][col] = 0; 6 x = 2; y = 45; 7 scores[3][100] = 99; 8 scores[x][y] = 25; /* same as: scores[2][45] = 25; */ 9 scores[x+1][y+x] = 34; /* same as: scores[3][47] = 34; */ 10 printf("enter a value: "); 11 scanf("%d", &scores[3][100]); Two-D Arrays and Functions: #include void init(int list[][140], int rows); int main(void) { int scores[4][140]; init(scores,4); /* not shown: rest of program */ return(0); } void init(int list[][140], int rows) { int i, j; for (i = 0; i < rows; i++) for (j = 0; j < 140; j++) list[i][j] = 0; } Pointers and Functions Incorrect version of swap: int main (void) { int x,y; x = 3; y = 100; swap(x,y); ... return(0); } void swap(int x, int y) { int temp; temp = x; x = y; y = temp; } Correct version of swap: int main (void) { int x,y; x = 3; y = 100; swap(&x,&y); ... return(0); } /* new version of swap, with pointer parameters */ void swap(int *p1, int *p2) { int temp; temp = *p1; *p1 = *p2; *p2 = temp; } ------------------------------------------------------------ Using Pointers for "Multiple Return Values" #include void sumProduct(int num1, int num2, int *sump, int *productp); int main (void) { int num1, num2, sum, product; printf("enter 2 values:"); scanf("%d %d", &num1, &num2); sumProduct(num1, num2, &sum, &product); printf("sum= %d product = %d\n", sum, product); return(0); } void sumProduct(int n1, int n2, int *sump, int *productp) { *sump = n1 + n2; *productp = n1 * n2; }