配列とポインタ
そうそう、ものすごく基本的なところではあるけど。配列を関数の仮引数に指定したときってどうなるんだっけーってそんなネタあったよなーと思って。
#include <stdio.h> void print_size(int *size) { printf("--sizeof--\n"); printf("%d\n", sizeof(size)); printf("%d\n", sizeof(size[0])); printf("%d\n", sizeof(size)/sizeof(size[0])); } void print_size_of_array(int size[]) { printf("--sizeof array--\n"); printf("%d\n", sizeof(size)); printf("%d\n", sizeof(size[0])); printf("%d\n", sizeof(size)/sizeof(size[0])); } int main() { int array[] = {1, 2, 3}; printf("%d\n", sizeof(array)); printf("%d\n", sizeof(array[0])); printf("%d\n", sizeof(array)/sizeof(array[0])); print_size(array); print_size_of_array(array); return 0; }
12 4 3 --sizeof-- 4 4 1 --sizeof array-- 4 4 1
やぱ、配列を関数にわたすときは、サイズも一緒に渡しましょうってこと?
ブクマった覚えがあるとおもって見たらやっぱりブクマってあった。