Matrix multiplication pairs each row of A with each column of B. If A is m × n and B is n × p, then AB exists and has size m × p.
Remember
A (m × n) × B (n × p) → C (m × p)
C[i][j] = sum over k of A[i][k] * B[k][j]
Example (2×2):
[1 2] [5 6] [1·5+2·7 1·6+2·8] [19 22]
[3 4] × [7 8] = [3·5+4·7 3·6+4·8] = [43 50]
Not the same as cell-by-cell multiply.
A shape
B shape
Allowed?
Result
2 × 2
2 × 2
Yes
2 × 2
2 × 3
3 × 2
Yes
2 × 2
2 × 3
2 × 2
No
—
Approach
How to Multiply Matrices in C
Four clear steps — then code the classic triple loop.
Check that A’s columns equal B’s rows.
Create result C with size rowsA × colsB and zero it.
For each i, j, accumulate sum += A[i][k] * B[k][j] over k.
Store that sum in C[i][j].
Method
Idea
Time
Best for
Triple nested loops
Dot product of row i and column j
O(m × n × p)
Interviews, teaching
Shape-safe multiply
Validate inner dimensions first
O(m × n × p)
Safer production-style code
Pseudocode
Pseudocode
function Multiply(A, B):
m = rows of A
n = cols of A
p = cols of B
if n != rows of B:
error "inner dimensions must match"
C = new matrix[m][p] // zeros
for i from 0 to m - 1:
for j from 0 to p - 1:
for k from 0 to n - 1:
C[i][j] = C[i][j] + A[i][k] * B[k][j]
return C
Reference
Cheat Sheet
Keep these facts handy while writing the program.
Topic
Detail
Shape rule
cols(A) == rows(B)
Result size
rows(A) × cols(B)
Cell formula
Σ A[i][k] * B[k][j]
Loops
i rows, j cols, k shared
Not entrywise
Do not confuse with A[i][j] * B[i][j]
Classic check
{{1,2},{3,4}} × {{5,6},{7,8}} = {{19,22},{43,50}}
Try it
Live Preview
Pick a sample pair to see A, B, and the product AB.
Tap a chip to run. Inner dimensions always match in these samples.
Result
A (2×2) =
1 2
3 4
B (2×2) =
5 6
7 8
A × B (2×2) =
19 22
43 50