#include <stdio.h>
#include <string.h>
//#define _CRT_SRCURE_NO_WARNING
#pragma warning(disable:4996)
typedef unsigned int uint;
typedef unsigned char byte;
struct student {
int ID;
char *name;
int age;
};
//这样我们之前写的学生类 就会有一个更像javaBean的名字 Student
typedef struct student Student;
//回顾我们一个字符串拼接的函数
const char *func1(const char *str1,const char *str2){
if (str1 != NULL&&str2 != NULL){
char * p = malloc(strlen(str1) + strlen(str2) + );
strcpy(p, str1);
strcat(p, str2);
return p;
}
}
typedef const char *Func1 (const char *, const char *);
//typedef是类型定义的意思。我们把一个函数定义叫做Func1.这个函数是:是具有两个参数并且返回值是const char* 的,并且这两个参数 都是const char * 类型的。
//这样我们的回调函数就比较好写了
//回调函数还是要多背几遍的。
const char *mybackcall(Func1, const char*, const char *);
const char *mybackcall1(const char *func1(const char *, const char *), const char *, const char *);
const char *mybackcall2(Func1 *f, const char *s1, const char *s2){
return f(s1, s2);
}
const char *mybackcall3(const char *(func1(const char *, const char *)), const char *s1, const char *s2){
return func1(s1, s2);
}
typedef const char *(* Func2) (const char*, const char *);
const char * myback(Func2, const char *, const char *);
const char * myback1(Func2 f, const char * str1, const char * str2){
return f(str1, str2);
}
const char * myback3(const char *(*)(const char *, const char *), const char *, const char *);
const char * myback2(const char * (*f)(const char *, const char *), const char *str1, const char *str2){
return f(str1, str2);
}
int main(){
Func2 f1[];
Func1 *f2[];
uint a = ;
byte b = ;
printf("a:%d\nb:%c\n", a, b);
char *p = func1("hello", "world");
printf("%s\n", p);
free(p);
getchar();
return ;
}