C言語での2次元配列の簡単な捉えた方
本記事でやりたいこと
C言語で2次元配列についての理解と作成がしたい。
2次元配列とは
行があって、
列があって、
縦にも横にも値が入れられる表のこと。たぶんね。
これをC言語で作成します。
ポインタやら、malloc(マロック)やら出てきますけど、
軽く流す気持ちで大丈夫です。
matrix.c
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main(int argc, char *argv[])
{
int n, i, j;
int **matrixA, **matrixB, **matrixC;
double st, en;
if (argc < 2)
{
n = 64;
}
else
{
n = atoi(argv[1]);
}
matrixA = malloc(sizeof(int *) * n);
matrixB = malloc(sizeof(int *) * n);
matrixC = malloc(sizeof(int *) * n);
for (i = 0; i < n; i++)
{
matrixA[i] = malloc(sizeof(int) * n);
matrixB[i] = malloc(sizeof(int) * n);
matrixC[i] = malloc(sizeof(int) * n);
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
matrixA[i][j] = rand() % 10 + 1;
matrixB[i][j] = rand() % 10 + 1;
// printf("matrixB[%d][%d] = %d\n", i, j, matrixA[i][j]);
}
}
st = omp_get_wtime();
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
matrixC[i][j] = matrixA[i][j] * matrixB[j][i];
// printf("matrixC[%d][%d] = %d\n", i, j, matrixC[i][j]);
}
}
en = omp_get_wtime();
printf("Etime=%.6f\n", en - st);
// printf("%d\n", n);
// printf("argc = %d\n", argc);
free(matrixA);
free(matrixB);
free(matrixC);
return 0;
}
freeちゃんとできてないような。。。
あっているかどうかは置いておいて、
こんな感じです。
内容
とりあえず A, B, Cを定義して
matrix.c
int **matrixA, **matrixB, **matrixC;
A, B, Cの行を配列を作成(mallocによって)
matrix.c
matrixA = malloc(sizeof(int *) * n);
matrixB = malloc(sizeof(int *) * n);
matrixC = malloc(sizeof(int *) * n);
各配列にも配列を作って完成!!(mallocによって)
matrix.c
for (i = 0; i < n; i++)
{
matrixA[i] = malloc(sizeof(int) * n);
matrixB[i] = malloc(sizeof(int) * n);
matrixC[i] = malloc(sizeof(int) * n);
}
matrix.c
int **matrixA, **matrixB, **matrixC;
matrix.c
matrixA = malloc(sizeof(int *) * n);
matrixB = malloc(sizeof(int *) * n);
matrixC = malloc(sizeof(int *) * n);
matrix.c
for (i = 0; i < n; i++)
{
matrixA[i] = malloc(sizeof(int) * n);
matrixB[i] = malloc(sizeof(int) * n);
matrixC[i] = malloc(sizeof(int) * n);
}
こんな感じにイメージすればいいんじゃない?
実際は違うらしいんだけど。
てことで、誰かのためになればと思っています!!
お疲れ様でした。
Author And Source
この問題について(C言語での2次元配列の簡単な捉えた方), 我々は、より多くの情報をここで見つけました https://qiita.com/Retsuki/items/9620e3ec9bc1d159c462著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .