C语言小板凳(2)
来源:互联网 发布:mac 触摸板 鼠标 反向 编辑:程序博客网 时间:2024/03/29 20:07
(1)typedef高档用法:
typedef void (*sighandler_t)(int);
盖住 typedef不看 ,再简单不过,sighandler_t就是一个函数指针,指向的函数接受一个整型参数并返回一个无类型指针
加上typedef之后sighandler_t就是一种新的类型,就可以像int一样地去用它,不同的是它声明是一种函数指针,这种指针指向的函数接受一个整型参数并返回
这种宏定义常用来定义使用回调函数的函数的参数,看例程序2。
typedef void (*sighandler_t)(int);
盖住 typedef不看 ,再简单不过,sighandler_t就是一个函数指针,指向的函数接受一个整型参数并返回一个无类型指针
加上typedef之后sighandler_t就是一种新的类型,就可以像int一样地去用它,不同的是它声明是一种函数指针,这种指针指向的函数接受一个整型参数并返回
这种宏定义常用来定义使用回调函数的函数的参数,看例程序2。
例程序1:
#include <stdio.h>#include <string.h>typedef void (*point_func)(int);void func1(int i){printf("\n i=%d\n\n",i);}int main(){point_func my_func;my_func = func1;my_func(367);}
运行结果:i=367
例程序2:涉及回调函数的用法
#include <stdio.h>#include <string.h>typedef int (*point_func)(int,int);//point_func是一种指向返回值是int型,输入参数是两个int型的函数的类型int my_add(int i,int j){return (i+j);}void func1(point_func add) //回调函数:func1函数通过指针参数来调用其他函数{int a=300,b=99,tmp;tmp = add(300,99);printf("\n sum = %d\n\n",tmp);}int main(){func1(my_add);return 0;}
运行结果:
sum = 399
(2)圆括号()的结合性比*的结合性高
int *function();//function是一个函数,返回值是int型指针int (*function)();//function是一个函数指针,他指向函数返回值为intint *(*function)();//function是一个函数指针,返回值是int型指针
(3)指针数组 & 数组指针【关键:方括号[]的结合性比*的结合性优先级要高 】
①指针数组:用来存放指针的数组,宾语是数组。
int *point[];//存放(指向整型变量的)指针的数组
②数组指针,指向某种类型数组的指针,宾语是指针。
int (*point)[];//指向整型数组的指针
举例:
#include <stdio.h>#include <string.h>int main(){char i;char ch1[]="Hello";char ch2[]="World!";//指针数组const char *table[]={"red","yellow","blue","green"};//将长短不一的字符串用数组来管理:即将这些字符串的起始地址放到数组里面来//数组指针const char (*point)[];//指针数组操作for(i=0;i<4;i++)printf("\n color=%s\n",table[i]);//数组指针操作:可指向不同长度的数组point = ch1;printf("\n ch1[]=%s\n",point);point = ch2;printf(" ch2[]=%s\n\n",point);return 0;}
运行结果:
(4)凌乱笔记
①/**/和//注释符在编译的时候会被替换成空格
②#和define之间可以有空格
③“\”接续符同样适用于注释,其后和下一行开始都不能有空格
④任何一个字符都可以用转义字符来表示:
八进制表示ASIIC值:\ddd
printf("\102"); //打印B
十六进制表示ASIIC值:\xhh
printf("\x42");//打印B
0 0
- C语言小板凳(2)
- C语言小板凳(1)
- 小板凳社区
- 我的小板凳
- 板凳
- 杭电4883 TIANKENG’s restaurant(小板凳的问题)
- c语言小程序(2)
- C语言小笔记(2)
- C语言小知识(2)
- C语言小练习 2
- 分享:菜鸟的练习--我的第一个小板凳
- VTK初入门径--第一只小板凳
- VTK初入门径--第二只小板凳
- VTK初入门径--第三只小板凳
- VTK初入门径--第四只小板凳
- VTK初入门径--第五只小板凳
- 面试:C语言C++小知识总结(2)
- [C语言基础]一些C语言小程序(一)
- POJ 2395 Out of Hay (MST)
- MySql远程连接无法打开解决办法
- HDU 1840 Equations【简单数学题】
- 用软碟同(UtroISO)制作install.win大于4G的启动盘
- SpringMVC 两种上传文件方法
- C语言小板凳(2)
- jQuery源码之动画详解二
- 函数注意事项
- 谷歌浏览器 Google Chrome v41.0.2272.101 便携增强版
- 100 hours anti boiled water film faced plywood
- Android图像处理技术(实现Android中的PS)(二)
- 第一章7至12题
- 【JAVA设计模式】--之策略模式
- UVA 10474 Where is the Marble?(