関数ポインター

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 関数ポインター

Re: 関数ポインター

#3

by box » 3年前

ほんのちょっとしたサンプルコードその2です。

コード:

#include<stdio.h>

typedef int (*keisan)(int, int);

int add(int a, int b)
{
    return a + b;
}

int sub(int a, int b)
{
    return a - b;
}

int mul(int a, int b)
{
    return a * b;
}

int div(int a, int b)
{
    return (b != 0) ? (a / b) : 0;
}

int main(void)
{
    keisan f[] = { add, sub, mul, div };
    int i;

    for (i = 0; i < sizeof(f) / sizeof(f[0]); i++) {
        printf("%p\n", f[i]);
        printf("%d\n", (*f[i])(10, 3));
    }
    return 0;
}

Re: 関数ポインター

#2

by box » 3年前

ほんのちょっとしたサンプルコードです。

コード:

#include<stdio.h>

typedef void (*func)(void);

void hello(void)
{
    printf("Hello\n");
}

void bonjour(void)
{
    printf("Bonjour\n");
}

void gutentag(void)
{
    printf("Guten Tag\n");
}

int main(void)
{
    func f[] = { hello, bonjour, gutentag };
    int i;

    for (i = 0; i < sizeof(f) / sizeof(f[0]); i++) {
        printf("%p\n", f[i]);
        (*f[i])();
    }
    return 0;
}

関数ポインター

#1

by gama » 3年前

コード:

#include<stdio.h>


void hello(void)
{
    printf("Hello/n");
}
int main(void)
{
    void (* pfunc)();

    pfunc = hello;
    printf("Helloのアドレス = %p", hello);
    printf("pfuncのアドレス = %p", *pfunc);

    pfunc();

    return 0;
}
このコードにtypedefの型定義を行いたいです。
typedefの使い方がいまいちわかってません
したいのは、helloか*pfuncを定義することは可能ですか?

ページトップ