C基础

一、函数指针

//
//  main.c
//  L01Helloc
//
//  Created by zj on 14-6-1.
//  Copyright (c) 2014年 zj. All rights reserved.
//

#include <stdio.h>

void sayHello(){
    printf("Helloc C\n");
}

void sayHello1(int i){
    printf("Hello C  %d\n",i);
}

int main(int argc, const char * argv[])
{
    void (*p)();
    void (*p1)(int i);
    p = sayHello;
    p1 = sayHello1;
    p();
    p1(98);
    return 0;
}

二、Typedef关键字

//
//  main.c
//  L01Helloc
//
//  Created by zj on 14-6-1.
//  Copyright (c) 2014年 zj. All rights reserved.
//

#include <stdio.h>

typedef struct {
    int age;
} People;

void sayHello(){
    printf("Helloc C\n");
}

//代表返回值为void ,无传入参数的函数
typedef void (*Func)();


int main(int argc, const char * argv[])
{
    People p;
    p.age = 13;
    Func f = sayHello;
    f();
    
    return 0;
}

三、面向对象

//
//  main.c
//  L01Helloc
//
//  Created by zj on 14-6-1.
//  Copyright (c) 2014年 zj. All rights reserved.
//

#include <stdio.h>
#include <stdlib.h>

//Object begin>>>>>>>>>

#define ObjectField void(*onDelete)(void*);

typedef struct Object{
    ObjectField
} Object;

#define ObjectCreate(TYPE) malloc(sizeof(TYPE))

#define ObjectDelete(obj) {\
    obj->onDelete(obj);\
    free(obj);\
}

void ObjectOnDelete(void *obj){
    printf("Object on delete \n");
}

Object* ObjectInit(Object *obj){
    obj->onDelete = ObjectOnDelete;
    return obj;
}

//Object end<<<<<<<<<<<<<<<<<<<<<

typedef struct {
    ObjectField
    int age;
    void(*sayHello)();
} People;

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

void PeopleOnDelete(void *p){
    ObjectOnDelete(p);
    printf("People on delete \n");
}

People* PeopleInit(People *p, int age){
    ObjectInit((Object *)p);
    p->age = age;
    p->sayHello = PeopleSayHelloc;
    p->onDelete = PeopleOnDelete;
    return p;
}

int main(int argc, const char * argv[])
{
    People *p = PeopleInit(ObjectCreate(People), 20);
    p->sayHello();
    ObjectDelete(p);
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值