The following show four different character array initializations:
static char name1[] = { 'J', 'a', 'n' }; static char name2[] = { "Jan" }; static char name3[3] = "Jan"; static char name4[4] = "Jan";
These initializations create the following elements:
name1 | name2 | name3 | name4 | ||||
Element | Value | Element | Value | Element | Value | Element | Value |
---|---|---|---|---|---|---|---|
name1[0] | J | name2[0] | J | name3[0] | J | name4[0] | J |
name1[1] | a | name2[1] | a | name3[1] | a | name4[1] | a |
name1[2] | n | name2[2] | n | name3[2] | n | name4[2] | n |
name2[3] | \0 | name4[3] | \0 |
Note that the NULL character (\0)is lost for name1[] and name3[3]. A compiler warning is issued for name3[3].
The following program defines a floating-point array called prices.
The first for statement prints the values of the elements of prices. The second for statement adds five percent to the value of each element of prices, and assigns the result to total, and prints the value of total.
/** ** Example of one-dimensional arrays **/ #include <stdio.h> #define ARR_SIZE 5 int main(void) { static float const prices[ARR_SIZE] = { 1.41, 1.50, 3.75, 5.00, .86 }; auto float total; int i; for (i = 0; i < ARR_SIZE; i++) { printf("price = $%.2f\n", prices[i]); } printf("\n"); for (i = 0; i < ARR_SIZE; i++) { total = prices[i] * 1.05; printf("total = $%.2f\n", total); } return(0); }
This program produces the following output:
price = $1.41 price = $1.50 price = $3.75 price = $5.00 price = $0.86 total = $1.48 total = $1.57 total = $3.94 total = $5.25 total = $0.90
The following program defines the multidimensional array salary_tbl. A for loop prints the values of salary_tbl.
/** ** Example of a multidimensional array **/ #include <stdio.h> #define ROW_SIZE 3 #define COLUMN_SIZE 5 int main(void) { static int salary_tbl[ROW_SIZE][COLUMN_SIZE] = { { 500, 550, 600, 650, 700 }, { 600, 670, 740, 810, 880 }, { 740, 840, 940, 1040, 1140 } }; int grade , step; for (grade = 0; grade < ROW_SIZE; ++grade) for (step = 0; step < COLUMN_SIZE; ++step) { printf("salary_tbl[%d] [%d] = %d\n", grade, step, salary_tbl[grade] [step]); } return(0); }
This program produces the following output:
salary_tbl[0] [0] = 500 salary_tbl[0] [1] = 550 salary_tbl[0] [2] = 600 salary_tbl[0] [3] = 650 salary_tbl[0] [4] = 700 salary_tbl[1] [0] = 600 salary_tbl[1] [1] = 670 salary_tbl[1] [2] = 740 salary_tbl[1] [3] = 810 salary_tbl[1] [4] = 880 salary_tbl[2] [0] = 740 salary_tbl[2] [1] = 840 salary_tbl[2] [2] = 940 salary_tbl[2] [3] = 1040 salary_tbl[2] [4] = 1140