시각적으로 행렬을 연상
int arr[2][3] = {
{1, 2, 3}, // 0행
{4, 5, 6} // 1행
};
int arr[2][3] = {1,2,3,4,5,6};
실행 예제
#define ROW 2
#define COL 3
int main() {
int i, j;
int first[ROW][COL], second[ROW][COL], add[ROW][COL];
for(i = 0; i < ROW; i++){
for(j = 0; j<COL; j++){
printf("Enter first matrix[%d][%d]: ", i, j);
scanf("%d", &first[i][j]);
}
}
for(i = 0; i < ROW; i++){
for(j = 0; j<COL; j++){
printf("Enter second matrix[%d][%d]: ", i, j);
scanf("%d", &second[i][j]);
}
}
for(i = 0; i < ROW; i++){
for(j = 0; j<COL; j++){
add[i][j] = first[i][j] + second[i][j];
}
}
printf("Sum of two matrices: \n");
for(i = 0; i < ROW; i++){
for(j = 0; j<COL; j++){
printf("%d ", add[i][j]);
}
printf("\n");
}
return 1;
}
int main() {
int *p, *q, arr[2][3] = {1, 2, 3, 4, 5, 6 };
printf("arr: %p\n", arr);
printf("arr+1: %p\n", arr+1);
printf("&arr: %p\n", &arr);
printf("&arr+1: %p\n\n", &arr+1);
printf("arr[0]: %p\n", arr[0]);
printf("arr[0]+1: %p\n", arr[0]+1);
printf("&arr[0]: %p\n", &arr[0]);
printf("&arr[0]+1: %p\n\n", &arr[0]+1);
p = arr;
printf("p: %p, p+1: %p \n", p, p+1);
q = arr[0];
printf("q: %p, q+1: %p \n", q, q+1);
printf("(q+1)[2]: %d \n\n", (q+1)[2]);
return 0;
}




int* p[]: 배열 p의 요소가 정수 포인터
int (*p)[]: 포인터 p가 가리키는 것이 정수 배열
void print_it(int p[2][3]){
int i, j;
for(i = 0; i < 2; i++){
for(j = 0; j < 3; j++){
p[i][j] = i*i+j*j;
printf("%d ", p[i][j]);
}
printf("\n");
}
}
int main() {
int *arr = (int*)malloc(2*3*sizeof(int));
if(arr != NULL)
print_it(arr);
free(arr);
arr = NULL;
return 0;
}
#include <stdlib.h>
int ** create_matrix(int, int);
void destroy_matrix(int**, int);
int main() {
int row, column, i, j, **matrix;
printf("Enter row and column.\n");
scanf("%d%d", &row, &column);
matrix = create_matrix(row, column);
for (i = 0; i < row; i++) {
for (j = 0; j < column; j++) {
matrix[i][j] = i * i + j * j;
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
destroy_matrix(matrix, row);
return 0;
}
int ** create_matrix(int row, int col) {
int i, **p;
p = (int**)malloc(row * sizeof(int*));
if (p == NULL)
exit(1);
for (i = 0; i < row; i++) {
p[i] = (int*)malloc(col * sizeof(int));
if (p[i] == NULL)
exit(1);
}
return p;
}
void destroy_matrix(int** p, int row) {
int i;
for (i = 0; i < row; i++)
free(p[i]);
free(p);
p = NULL;
}
int *p[100]; 으로 선언int **p; 으로 선언