本文主要是介绍C语言小板凳(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
(1)typedef高档用法: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是一个函数指针,他指向函数返回值为int
int *(*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
这篇关于C语言小板凳(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!