综合运用C语言指针强制转换和回调函数
在这个例子里,回调函数比较两个值。查找函数向比较函数传递两个指向需要进行比较的值的指针,并检查比较函数的返回值。例如:零表示相等的值,现在查找函
数就与类型无关,因为它本身并不执行实际的比较。确实,调用者必须编写必需的比较函数,但这样做是很容易的,因为调用者知道链表中所包含的值的类型。如果
使用几个分别包含不同类型值的链表,为每种类型编写一个比较函数就允许单个查找函数作用于所有类型的链表。
程序段01 是类型无关的查找函数的一种实现方法。
注意函数的第 3 个参数是一个函数指针。这个参数用一个完整的原型进行声明。同时注意虽然函数绝不会修改参数 node 所指向的任何节点,但
node 并未被声明为 const 。如果 node 被声明为
const,函数将不得不返回一个const结果,这将限制调用程序,它便无法修改查找函数所找到的节点。
/*
**程序 01 ——类型无关的链表查找函数
**在一个单链表中查找一个指定值的函数。它的参数是一个指向链表第 1 个节点的指针、一个指向我们需要 查找的值的指针和一个函数指针。
**它所指向的函数用于比较存储于链表中的类型的值。
*/
#include <stdio.h>
#include "node.h"
Node *
search_list( Node *node, void const *value, int (*compare)( void const *, void const *) )
{
while (node!=NULL){
if(compare(&
相关文档:
转载自:
馨荣家园blog
在C语言中,假设我们有这样的一个函数:
int function(int a,int b)
调
用时只要用result =
function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算
机没有办法知道一个函数调用需要多少个、什么样的参数,也 ......
一、从C与C++编译连接方式深入理解extern "C"
<1>.C和C++对函数的处理方式是不同的.被extern "C"修饰的变量和函数是按照C语言方式编译和连接的.extern "C"用于实现C++与C及其它语言的混合编程。
<2>.未加extern “C”声明时的编译方式
首先看看C++中对类似C的函数是怎样编译的。
作为一种面向 ......
http://blog.csdn.net/noah1987/archive/2008/10/21/3118934.aspx
本程序可以读取.wav文件,然后进行播放。
使用前,请确认您是否安装音频驱动。
确认方法:cat /etc/sndstat,如果显示无此设备,则没有安装驱动。
安装驱动很简单,到oss.com上下载音频驱动,然后按照网上的教程进行就可以了。
源代码如下:
#include ......
第一章 导言
1,定义(define)与声明(declaration)
定义表示创建变量或分配存储单元;而声明指的是说明变量的性质,但不分配存储单元。
第二章 类型、运算符和表达式
1,数据类型及长度
C中只有4种基本数据类型:char ,int ,float ......
第一次仔细地看这种代码,都是从网上复制做了略微改动后的产物。代码如下:
#include "reg52.h"
unsigned char Count;
sbit Xiang=P1^2 ; //蜂鸣器响
unsigned char code SONG[] ={
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x2 ......