typedef的使用1——引入
#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 ; }
typedef的使用1——引入的更多相关文章
- typedef那回事儿
typedef是一种特殊的声明方式,不过它与普通声明(详见这里)的含义取大不相同.普通声明的主角是“变量”,它或是创建一个新变量或是对外文件变量使用前的声明:而typedef声明的主角则是“类型”,通 ...
- typedef可以成为你的朋友
typedef static char int8;这个声明正确吗? A:err 所以上面那个声明是错误的. typedef为一种类型引入新的名字,而不是为变量分配空间,它并没有引入新的类型,而是为现有 ...
- Effective Modern C++:03转向现代C++
07:在创建对象时注意区分()和{} 自C++11以来,指定初始化值的的方式包括使用小括号,等号,以及大括号: ); // initializer is in parentheses ; // ini ...
- typedef
第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, ...
- C语言typedef的用法(转)
http://www.cnblogs.com/afarmer/archive/2011/05/05/2038201.html 一.基本概念剖析 int* (*a[5])(int, char*); ...
- C++ typedef用法小结 (※不能不看※)
C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不 ...
- typedef 各类定义,各类问题大全
第一篇:typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定 ...
- define与typedef 区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如:#define PI 3. ...
- (六)C语言之typedef详解
1.typedef可以看作type define的缩写,顾名思义就是类型定义,也就是说它只是给已有的类型重新定义了一个方便使用的别名,并没有产生新的数据类型.typedef的使用与宏定义define有 ...
随机推荐
- 【译】 AWK教程指南 5AWK中的数组
awk程序中允许使用字符串当做数组的下标(index).利用这个特色十分有助于资料统计工作.(使用字符串当下标的数组称为Associative Array) 首先建立一个数据文件,并取名为 reg.d ...
- Obective-C之宏定义
优(dan)美(teng)的前奏 宏定义这个东东,估计大家在代码中应该天天用吧. 在我刚刚做的一个项目中,各种往代码里码“#define”这种预处理指令. 什么动画时长啊,cell高度啊,cell的个 ...
- lcov收集覆盖率
1.gcov 1.1 什么是gcov 首先我们要了解什么是gcov,gcov伴随gcc 发布.gcc编译加入-fprofile-arcs -ftest-coverage 参数生成二进制程序,执行测试用 ...
- Spark 0.9的安装配置
一.上传scala2.10.3到linux 下载scala 2.10.3文件.网上的scala-2.10.3.tgz.scala-2.10.3.rpm,前者支持unix,后者专门给linux使用.但我 ...
- 2014-02-27WPF学习笔记
//StackPanel布局 //创建时间:11:33 页面布局:Orientation默认纵向:Vertical水平为:Horizontal <Button> <Button.Co ...
- HW6.3
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- 【转】 hive安装配置及遇到的问题解决
原文来自: http://blog.csdn.net/songchunhong/article/details/51423823 1.下载Hive安装包apache-hive-1.2.1-bin.ta ...
- 转载Ajax.Net--ScriptManager和UpdatePanel控件
ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异步局部更新区域,它必须依赖于ScriptManager存在,因 ...
- (5)RARP:逆地址解析协议
一.简介 无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求(一帧在网络上广播的数据),请求某个主机响应该无盘系统的IP地址(在RARP应答中).感觉这个过程和上一章中 ...
- [一]JQueryMobile简介
JQueryMobile 基于JQuery,实现对不同尺寸手机屏幕的支持,提供了许多组件,以及对于手机端的常用事件(touch.tap.taphold) 如何使用 1.引入jquery.js.jque ...