double strtod const char *nPtr, char**endPtr ; Converts the stringnPtr todouble.long strtol const char *nPtr, char**endPtr, int base ; Converts the stringnPtr tolong.unsigned long strtou
KIỂU DỮ LIỆU CÓ CẤU TRÚC TRONG C Kiểu Mảng Mảng xâu kí tự Kiểu Bản ghi Mảng ghi Kiểu Union Thao tác bit Kiểu Enum KIỂU MẢNG Các mảng • Là cấu trúc gồm phần tử liệu có liên quan với • Các thực thể tĩnh (Static) – kích thước khơng thay đổi suốt chương trình (Phân biệt với: Cấu trúc liệu động (Dynamic) Tên mảng (tất phần tử có chung tên c) Khái niệm mảng c[0] -45 c[1] c[2] c[3] 72 c[4] 1543 c[5] -89 • Tên mảng c[6] c[7] 62 • Số vị trí c[8] -3 c[9] • Nhóm định vị nhớ liên tiếp • Cùng chung tên kiểu liệu Tham chiếu đến phần tử, cụ thể Định dạng: c[10] 6453 c[11] 78 arrayname[ position number ] • phần tử có vị trí • n phần tử mảng với tên c: – c[ ], c[ ] c[ n – ] Số vị trí phần tử mảng c Các phần tử mảng giống biến c[ ] = 3; printf( "%d", c[ ] ); • Thực thao tác ngoặc [] để xác định số + Nếu x = c[ - ] == c[ ] == c[ x ] + Chỉ số mảng xác định biểu thức toán học Khai báo mảng Khi khai báo mảng • Tên mảng • Kiểu mảng • Số phần tử Cú pháp: arrayType arrayName[ numberOfElements ]; • Ví dụ: int c[ 10 ]; float myArray[ 3284 ]; Khai báo nhiều mảng có kiểu • Cú pháp tương tự khai báo biến • Ví dụ: int b[ 100 ], x[ 27 ]; Khai báo khởi tạo mảng Khởi tạo mảng: khai báo gắn giá trị phần tử int n[ ] = { 1, 2, 3, 4, }; • Nếu khơng đủ biến phần tử bên phải int n[ ] = { } // Tất phần tử • Nếu q nhiều phần tử báo lỗi cú pháp • C khơng kiểm tra giới hạn mảng • Nếu bỏ qua kích thước, sử dụng mặc định số phần tử khởi tạo int n[ ] = { 1, 2, 3, 4, }; Khởi tạo phần tử, mảng có phần tử Ví dụ: Khai báo khởi tạo mảng /* Fig 6.4: fig06_04.c Initializing an array with an initializer list */ Program Output #include Element Value /* function main begins program execution */ int main() { /* use initializer list to initialize array n */ int n[ 10 ] = { 32, 32, 27, 27, 64, 64, 18, 18, 95, 95, 14, 14, 90, 90, 70, 70, 60, 60, 37 }; 10 int i; /* counter */ 11 12 printf( "%s%13s\ "%s%13s\n", n", "Element", "Element", "Value" ); 13 14 /* output contents of array in tabular format */ 15 for ( i = 0; i < 10; 10; i++ ) { 16 17 printf( "%7d%13d\ "%7d%13d\n", n", i, n[ i ] ); } /* end for */ 18 19 return 0; /* indicates successful termination */ 20 32 27 64 18 95 14 90 70 60 37 21 } /* end main */ Mối liên hệ mảng trỏ C Ví dụ: Tên array &array[ ] (địa phần tử mảng) /* Fig 6.12: fig06_12.c The name of an array is the same as &array[ ] */ #include /* function main begins program execution */ int main() { char array[ ]; /* define an array of size */ 10 printf( " array = %p\ %p\n&array[0] = %p\ %p\n" 11 " &array = %p\ %p\n", n", 12 array, &array[ ], &array ); 13 14 return 0; /* indicates successful termination */ 15 16 } /* end main */ array = 0012FF78 &array[0] = 0012FF78 &array = 0012FF78 Mảng nhiều chiều Mảng nhiều chiều • Bảng với hàng cột (m hàng n cột) • Giống ma trận: số đầu hàng (row), sau cột (column) Column Row Row Row Column Column Column a[ ][ ] a[ ][ ] a[ ][ ] a[ ][ ] a[ ][ ] a[ ][ ] a[ ][ ] a[ ][ ] a[ ][ ] a[ ][ ] a[ ][ ] a[ ][ ] Chỉ số cột-Column Tên mảng Chỉ sô hàng-Row Mảng nhiều chiều Khởi tạo • int b[ ][ ] = { { 1, }, { 3, } }; • Khởi tạo theo hàng dấu {} • Nếu khơng đủ, phần tử cịn lại nhận giá trị int b[ ][ ] = { { }, { 3, } }; Tham chiếu phần tử • Chỉ hàng cột printf( "%d", b[ ][ ] ); • Nhập giá trị cho phần tử (i,j) mảng scanf(“%d”, &b[i][j]); Ví dụ: Khởi tạo mảng đa chiều /* Fig 6.21: fig06_21.c Initializing multidimensional arrays */ #include void printArray( const int a[][ ] ); /* function prototype */ /* function main begins program execution */ int main() { 10 /* initialize array1, array2, array3 */ 11 int array1[ ][ ] = { { , , }, { , , } }; 12 int array2[ ][ ] = { , , , , }; 13 int array3[ ][ ] = { { , }, { } }; 14 15 printf( "Values in array1 by row are:\ are: \ n" ); 16 printArray( array1 ); 17 18 printf( "Values in array2 by row are:\ are: \ n" ); 19 printArray( array2 ); 20 21 printf( "Values in array3 by row are:\ are: \ n" ); 22 printArray( array3 ); 23 return ; /* indicates successful termination */ 24 25 26 } /* end main */ 27 28 /* function to output array with two rows and three columns */ 29 void printArray( const int a[][ ] ) 30 { 31 int i; /* counter */ 32 int j; /* counter */ Program Output 33 34 /* loop through rows */ 35 for ( i = 0; i