C言語:自作関数とポインタ

photo credit: The Arrow via photopin (license)

Cで一番つまづくのがポインタらしいです。
今日は、自作関数を勉強しました。

ご存知でしたか?
int main(void){}って関数なんですよ!!
printf(“xxx”)も関数なんですよ!!
int main(void){}は、関数定義で、
printf(“xxx”)は、関数を呼び出しているんですっっ。

なんか、感動しました。

というわけで、以下、今日の復習です。

配列の先頭アドレスを自作関数に渡す

結果表示

mainここから
subここから
 2 15  8
 3  1 12
subここまで
mainここまで

ソース

#include<stdio.h>

/* sub関数定義 */
int sub(int *phai)
{
    int i,j;
    
    printf("subここから\n");
    /* mainで初期化した配列を表示 */
    for(i=0;i<=1;i++)
    {
        for(j=0;j<=2;j++)
        {
            printf("%2d ",*phai);  /* phaiの示すアドレスの値を表示 */
            phai++;               /* phaiを4バイト移動 */
        }
        printf("\n");
    }
    printf("subここまで\n");
    
    return;
}

/* main関数定義 */
int main(void)
{
    int hai[2][3]={2,15,8,3,1,12}; /* 配列初期化 */
    int *phai;                     /* ポインタ宣言 */

    printf("mainここから\n");
    /* 配列hai[0][0]のアドレスをsubに渡す */
    phai=&hai[0][0];
    sub(phai);
    printf("mainここまで\n");

    return 0;
}