1) static array
#include "stdio.h"
int main(int argc, char* argv[]) {
int a[] = {1, 2, 3, 4, 5, 6, 7};
int b[7] = {1, 2, 3, 4, 5, 6, 7};
int c[7];
int i;
int size;
size = sizeof(a) / sizeof(*a);
for(i=0; i<size; i++) {
printf("%d ", a[i]);
}
printf("\n");
size = sizeof(b) / sizeof(*b);
for(i=0; i<size; i++) {
printf("%d ", b[i]);
}
printf("\n");
size = sizeof(c) / sizeof(*c);
for(i=0; i<size; i++) {
*(c+i) = i + 1;
}
for(i=0; i<size; i++) {
printf("%d ", *(c+i));
}
printf("\n");
return 0;
}
2) dynamic array
#include "stdlib.h"
#include "stdio.h"
int main(int argc, char* argv[]) {
int size = 7;
int *a = (int*) malloc(size * sizeof(int));
int *b = malloc(size * sizeof(int));
int i;
if(a == NULL || b == NULL) {
exit(1);
}
for(i=0; i<size; i++) {
*(a+i) = i + 1;
b[i] = i + 1;
}
for(i=0; i<size; i++) {
printf("%d ", a[i]);
}
printf("\n");
for(i=0; i<size; i++) {
printf("%d ", b[i]);
}
printf("\n");
free(a);
return 0;
}
3) function pointer
#include <iostream>
#include <stdlib.h>
using std::cout;
using std::endl;
typedef struct struct_student_information {
int id;
int height;
int weight;
} struct_stud_info;
void sort_by_height(struct_stud_info* data, int& data_no) {
struct_stud_info data_tmp;
for(int i=0; i<data_no; i++) {
for(int j=0; j<data_no-1; j++) {
if(data[j].height > data[j+1].height) {
data_tmp = data[j];
data[j] = data[j+1];
data[j+1] = data_tmp;
}
}
}
}
void sort_by_weight(struct_stud_info* data, int& data_no) {
struct_stud_info data_tmp;
for(int i=0; i<data_no; i++) {
for(int j=0; j<data_no-1; j++) {
if(data[j].weight > data[j+1].weight) {
data_tmp = data[j];
data[j] = data[j+1];
data[j+1] = data_tmp;
}
}
}
}
int main(int argc, char* argv[]) {
int data_no = 7;
struct_stud_info stud_info[7];
for(int i=0; i<7; i++) {
stud_info[i].id = i + 1;
stud_info[i].height = rand() % 100;
stud_info[i].weight = rand() % 100;
}
void (*sort_func)(struct_stud_info*, int&);
sort_func = &sort_by_height;
sort_func(stud_info, data_no);
for(int i=0; i<data_no; i++) {
cout << "id: " << stud_info[i].id << " height: " << stud_info[i].height << " weight: " << stud_info[i].weight << endl;
}
cout << endl;
sort_func = &sort_by_weight;
sort_func(stud_info, data_no);
for(int i=0; i<data_no; i++) {
cout << "id: " << stud_info[i].id << " height: " << stud_info[i].height << " weight: " << stud_info[i].weight << endl;
}
return 0;
}
4) static 2D array
#include "stdio.h"
void print_data(int *data, int row, int col) {
int i;
int j;
for(i=0; i<row; i++) {
for(j=0; j<col; j++) {
printf("%d ", *(data + i*col + j));
}
}
printf("\n");
}
void print_data1(int (*data)[4], int data_row) {
int i;
int j;
for(i=0; i<data_row; i++) {
for(j=0; j<4; j++) {
printf("%d ", *(*(data+i)+j));
}
}
printf("\n");
}
int main() {
int data[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
int row = sizeof(data) / sizeof(*data);
int col = sizeof(*data) / sizeof(**data);
int *data_ptr = &(**data);
print_data(data_ptr, row, col);
print_data1(data, row);
return 0;
}
5) dynamic 2D array
#include "stdio.h"
#include "stdlib.h"
void print_data2(int **data, int row, int col) {
int i;
int j;
for(i=0; i<row; i++) {
for(j=0; j<col; j++) {
printf("%d ", *(*(data+i)+j));
}
}
printf("\n");
}
void print_data3(int ***data, int row, int col) {
int i;
int j;
for(i=0; i<row; i++) {
for(j=0; j<col; j++) {
printf("%d ", *(*(*data+i)+j));
}
}
printf("\n");
}
int main() {
int row = 3;
int col = 4;
int **data2;
int ***data3;
int i;
int j;
//data2 -> |array0_addr0|array0_addr1|...|
//array0_addr0 -> |arrary1_addr0|array1_addr1|...|
//array0_addr1 -> |arrary2_addr0|array2_addr1|...|
data2 = (int**)malloc(row*sizeof(int*));
for(i=0; i<row; i++) {
*(data2+i) = malloc(col*sizeof(int));
//data2[i] = malloc(col*sizeof(int));
}
//data3 -> *data3
//*data3 -> |array0_addr0|array0_addr1|...|
//array0_addr0 -> |arrary1_addr0|array1_addr1|...|
//array0_addr1 -> |arrary2_addr0|array2_addr1|...|
*data3 = (int**)malloc(row*sizeof(int*));
for(i=0;i<row;i++) {
//*((*data3)+i) = malloc(col*sizeof(int));
(*data3)[i] = malloc(col*sizeof(int));
}
for(i=0; i<row; i++) {
for(j=0; j<col; j++) {
*(*(data2+i)+j) = i*col + j;
}
}
for(i=0; i<row; i++) {
for(j=0; j<col; j++) {
*(*(*data3+i)+j) = i*col + j;
}
}
print_data2(data2, row, col);
print_data3(data3, row, col);
return 0;
}
No comments:
Post a Comment