- 函数指针数组运用
typedef void(*pMethod)(); //函数指针的样式 返回值,参数等
//函数数组
pMethod methods[] = { GetDeviceInfoCallBack,GetDeviceInfoCallBack,GetDeviceInfoCallBack };
int methodsSize=sizeof(methods)/sizeof(methods[0]);//函数指针数组的长度
#define SIZE(array) (sizeof(array)/sizeof(array[0])) //任务类型数组的长度
-
带参数及返回值的函数指针数组运用
# include <stdio.h>
//函数定义,可以多个
int UpdateValue2(float value)
{
printf("UpdateValue2:%f\n",value);
return 100;
}
int main()
{
//函数指针数组定义
int(*dbcl[])( float value)={UpdateValue2};
//函数指针数组调用
printf("main:%d\n",(*dbcl[0])(15));
return 0;
}
//UpdateValue2:15.000000
//main:100
//Press any key to continue
-
验证4字节,低位在前,转int
# include <stdio.h>
int main()
{
int i=0;
int Baud[]={115200};
unsigned char sendBuff[6]={0};
//验证4字节,低位在前,转int
sendBuff[2]=Baud[i]%256;
sendBuff[3]=(((unsigned short)Baud[i])&0xff00)>>8;
sendBuff[4]=(((unsigned int)Baud[i])&0x00ff0000)>>16;
sendBuff[5]=(((unsigned int)Baud[i])&0xff000000)>>24;
printf("%02X%02X%02X%02X\n",sendBuff[5],sendBuff[4],sendBuff[3],sendBuff[2]);
return 0;
}
-
指向数组的指针
# include <stdio.h>
int main()
{
//仅通过指针是无法获取它指向的数组的大小的。我把长度也单独放在一个数组里
//通过指针调用数组并计算长度,为什么长度不对?在32位系统中指针的长度始终是4,它是用来存放地址的。数组的长度是根据它中间的 元素个数*类型长度 得到的。sizeof 是在编译阶段确定的。指针只给出了两种信息:所指向数据的类型和地址 。而根据两者你是无法判断该数据的地址范围的。
const unsigned char vType0[]={8,1,1}; //参数类型:字符1,整型2,浮点4等
const unsigned char vType1[]={5,1,1,1,1}; //参数类型:字符1,整型2,浮点4等
const unsigned char vType2[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; //参数类型:字符1,整型2,浮点4等
const unsigned char vType3[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; //参数类型:字符1,整型2,浮点4等
const unsigned char *vType[]={vType0,vType1,vType2,vType3};
const unsigned char *v=vType[1];
unsigned int vTypeLength[]={sizeof(vType0),sizeof(vType1),sizeof(vType2),sizeof(vType3)};
printf("----%d,%d,%d,%d,%d,%d,%d\n",v[0],sizeof(v),sizeof(vType),sizeof(vType0),vType[0],vType0,vTypeLength[1]);
return 0;
}
//----5,4,16,3,1638212,1638212,5
//Press any key to continue
-
截取字符串后转成字节
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(int argc,char * argv[])
{
unsigned char i;
char dest[5] = {0};
char src[] = "1234";
memcpy(dest, src+1, 2);
i =(unsigned char)atoi(dest);
printf("%d",i);
return 0;
}
-
三维数组 测试
# include <stdio.h>
int main()
{
//三维数组 测试
char IDS[20][2][20]={
{"123","ddd"},
{"456","7777"},
};
printf("%s,%s",IDS[0][0],IDS[1][1]);
return 0;
}