c语言技术验证:带参数及返回值的函数指针数组运用 等

  • 带参数及返回值的函数指针数组运用

# 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;
}
发布了331 篇原创文章 · 获赞 140 · 访问量 71万+

猜你喜欢

转载自blog.csdn.net/chenhao0568/article/details/100169100