C语言之心得总结(一)

1、C语言结构体在多个文件中使用的方法

//步骤1
//在头文件(mpu.h 文件)中对结构体类型进行定义
例:
//定义结构体类型
struct MPU
{
     short Acce[3];
     short Gyro[3];
     short Mag[3];
}

//步骤2
//在需要使用上述结构体类型的 mpu.c 文件中定义结构体类型变量
//定义结构体类型变量
struct MPU mpu_value;

//步骤3
//除 mpu.h  mpu.c 文件,其他文件需要使用上述结构体类型变量时,需要在 mpu.h 文件中声明上述结构体类型变量为全局变量
extern struct MPU mpu_value;

 2、strstr(str1,str2)函数

 1 /*
 2 strstr(str1,str2) 函数是字符串处理函数之一,位于头文件 “string.h”
 3 定义:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址,否则,返回NULL。
 4 */
 5 //举例说明
 6 //包含
 7 char str1 = "123456";
 8 char str2 = "235";
 9 strstr(str1,str2) = 23456;
10 //不包含
11 char str1 = "123";
12 char str2 = "456";
13 strstr(str1,str2) = NULL;

 3.printf函数-输出函数-头文件“stdio.h”

 1 //1.printf("字符串\n");
 2 # include <stdio.h>
 3 int main(void)
 4 {
 5     printf("Hello World\n");  // \n表示换行
 6     return 0;
 7 }
8 //2.printf("输出控制字符",输出参数); 9 # include <stdio.h> 10 int main(void) 11 { 12 int i = 1; 13 printf("%d\n", i); /*%d是输出控制符,d 表示十进制,后面的 i 是输出参数*/ 14 return 0; 15 }
16 //3.printf("输出控制符1 输出控制符2...",输出参数1,输出参数2,...); 17 # include <stdio.h> 18 int main(void) 19 { 20 int i = 1; 21 int j = 2; 22 printf("%d %d\n", i, j); 23 return 0; 24 }
25 //4.printf("输出控制符 非输出控制符",输出参数); 26 #include <stdio.h> 27 void mian(void) 28 { 29 int i = 1; 30 printf("%dKM\n",i);//其中%d为输出控制符,KM为非输出控制符 31 }
/*输出控制符*/

%d      按十进制整型数据的实际长度输出
%ld     输出长整型数据
%md     m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于 m,则按实际位数输出
%u      输出无符号整型%c      用来输出一个字符
%f      用来输出实数,包括单精度和双精度,以小数形式输出%.mf    输出实数时小数点后保留 m 位
%o      以八进制整数形式输出
%s      用来输出字符串。用 %s 输出字符串同前面直接输出字符串是一样的。但是此时要先定义字符数组或字符指针存储或指向字符串
%x、%X、%#x、%#X)    以十六进制形式输出整数

 四、C 转义字符

五、结构体的存储(Flash、EEPROM)

//利用结构体指针实现结构体数据类型的存储和读取

//有下面一个结构体
typedef struct
{
    u8 Name;//名字
    u8 Age;//年龄
    u8 Score;//分数
}Student;
//通过sizeof关键字可以获取这个结构体类型的存储空间为3字节

//存储 void Flash_Write(Student *data) { u8 i=0,temp=0; for(i=0;i<sizeof(*data);i++) { memcpy(&temp,((u8 *)(data))+i,1); Flash_Write_OneByte((Flash_Data+i),temp) } }
//读取-这里读取函数有误,实现方法为存储函数的反向应用
void flashGetSysData(SysData *data)
{
  
}
/*
输入参数“Student *data”为结构体类型的指针,data指向该结构体的首地址,“data+1”则会使该指针地址向后跳过3个字节,因为data是结构体类型的指针,且该结构体在内存中占用连续的3个字节,并被认为是一个变量,如果指针+1,其指向的地址将会向后跳入一个完整的结构体存储空间,即3个字节 如果需要使用这个指针访问该结构体的每一个成员变量,即每次指针+1,地址跳过1Byte,则需要将该结构体类型的指针转换为unsigned char类型的指针“(u8 *)(data)”,这时再+1,则会跳一个字节。 */

 

转载于:https://www.cnblogs.com/imyang/p/9868840.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值