
C语言
GUET_一路向前
一名智能科学与技术专业的在职软件工程师,主要从事嵌入式软件开发(Linux应用开发、MCU开发、IOT等),平时喜欢学习技术、运动还有许多兴趣爱好,并使用博客记录自己所学的知识分享给大家,以及遇到的各种坑和解决办法,欢迎━(*`∀´*)ノ亻!关注我哦,让我们一起携手共进!持续更新......
展开
-
C语言初始化结构体变量5种方式
初始化结构体可以避免使用未初始化的垃圾数据,从而减少潜在的错误。这种方法类似于第一种方法和第二种方法的结合体,既能初始化时赋值,也可以不考虑顺序。C99标准新增了一个特性,可以在定义结构体时使用= { 0 }的方式直接将结构体所有成员初始化为零。在定义结构体时,可以直接赋值给结构体的各个成员。总之,根据具体情况选择最适合的初始化方法,可以提高代码的可读性和维护性。这种方法适用于任何值的初始化,但可能有性能开销。这种方法适用于C++,可以避免手动逐个赋值。这种方法适用于C++,可以简化初始化过程。原创 2025-03-01 10:08:03 · 488 阅读 · 0 评论 -
20250223C语言指针与应用
【代码】20250223C语言指针与应用。原创 2025-02-23 17:29:41 · 177 阅读 · 0 评论 -
【指针、数组参数】
【代码】【指针、数组参数】原创 2023-10-31 10:42:53 · 167 阅读 · 0 评论 -
【C&C++编码规范】
目的:加强编程人员在编程过程中的安全以上,建立编程人员的攻击者思维,养成安全编码的习惯,写出安全、可靠的代码。安全编码基本思想1.程序在处理外部数据时必须经过严格的合法性校验,编程人员在处理外部数据过程中必须时刻保持这种思维意识,不能做出任何外部数据符合预期的假设,外部数据必须经过严格判断后才能使用。编码人员必须在这种严酷的攻击环境下通过遵守这一原则保证程序的执行过程符合预期结果。原创 2023-09-08 17:37:55 · 478 阅读 · 0 评论 -
12:C语言关键字volatile
另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量时都从该变量的地址中读取数据。3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;1、中断服务程序中修改的供其它程序检测的变量需要加volatile;原创 2023-03-30 14:00:47 · 180 阅读 · 0 评论 -
Big-Endian 和 Little-Endian 模式的区别
Big Endian 和 Little Endian 模式的区别原创 2022-06-01 17:16:58 · 680 阅读 · 0 评论 -
11.指针数组
11.指针数组1.指针和数组的关系指针可以保存数组元素的地址可以定义一个数组,数组中有若干个相同类型指针变量,这个数组被称为指针数组指针数组本身是个数组,是个指针数组,是若干个相同类型的指针变量构成的集合。注意: 一般遇到这样的叠词,本质就是后者。2,指针数组的定义方法格式: 类型说明符 * 数组名[元素个数]比如: int * p[10];//定义了一个整形的指针数组p,有10个元素 p[0] ~ p[0],每个元素都是 int * 类型的变量int原创 2021-09-20 19:54:09 · 294 阅读 · 0 评论 -
10.指针的运算
10.指针的运算1. 指针可以加一个整数,往下指几个它指向的变量,结果还是个地址。但是前提: 指针变量指向的是一个数组,加一个整数才有意义。2.同类型的指针可以比较大小。指向前面的元素的指针 小于 指向 后面的元素的指针。如下所示:int a[12]; int* p, * q; p = &a[3]; q = &a[4]; if (p > q) { printf("p > q\n"); } else if (p == q) { print原创 2021-09-20 11:42:18 · 249 阅读 · 0 评论 -
9.指针与数组的关系
9.指针与数组的关系1. 数组与指针的基本关系:变量存放在内存中,有地址编号,我们定义的数组,其实就是多个相同类型的变量的集合,每个变量都占内存空间,都有地址编号。所以指针当然也可以存放数组元素的地址。2. 数组元素的引用方法方法1: 数组名[ 下标 ]int a[ 10 ];a [2] = 100;方法2: 指针名加下标 int a [10]; int *p; p = a; p[ 2 ] =23; //因为p和a等价,p[9] = 23;等价于 a[9]原创 2021-09-20 10:54:17 · 347 阅读 · 0 评论 -
8. C语言------指针相关概念
7. C语言------指针相关概念一,指针的简介1. what—什么是指针操作系统给每一个存储单元都分配了一个编号,从0x00 00 00 00 ~ 0xff ff ff ff ,这个编号我们称为地址。指针就是地址。存储单位如图所示:2. what----指针变量指针变量:就是个变量,是属于指针变量,即这个变量用来存放一个地址的编号。在32位操作系统下,地址总线是32位,所以地址编号是32位,所以指针变量是32位即4个字节。指针变量存放地址,可以通过它存放的地址找到,该地址存放的内容。原创 2021-09-19 12:19:16 · 155 阅读 · 0 评论 -
7.C语言----选择性编译(#if、#ifdef、#ifndef、#endif)
7.C语言----选择性编译1. 情形1#ifdef AAA代码段一;#else代码段二;#endif如果在当前 .c 文件上边定义过AAA,就编译代码段一,否则就编译代码段二主要和 if else 语句的区别, if else 语句都会被编译,通过条件选择性执行代码,而选择性编译,只有一块代码被编译。2. 情形2#ifndef AAA代码段一;#else代码段二;#endif和第一种互补,这种方法,经常用于防止头文件重复包含。常用于多文件编程中。3.原创 2021-09-18 17:45:50 · 3963 阅读 · 0 评论 -
6. C语言---include、define用法
6. C语言—include、define用法#include<> 用尖括号包含头文件,在系统指定的路径下找头文件#include" " 用双引号包含头文件,先在当前目录下找头文件,找不到,再到系统指定的路径下找。注意: include经常用来包含头文件,可以包含 .c 文件,但是大家不要包含.c文件,因为include包含的文件在预编译被展开,如果一个 .c 被包含多次,展开多次,会导致函数重复定义。所以不要包含,c 文件。define定义宏定义用define去定义宏是在预编译的时原创 2021-09-18 16:32:30 · 3268 阅读 · 0 评论 -
5. C语言---内部外部函数(全局局部函数)
5. C语言—内部外部函数(全局局部函数)1. 内部函数概念:在定义函数的时候,前面需要加static修饰,这样的函数称为内部函数,也称局部函数。static限定了函数的作用范围,在定义的 .c 文件有效。2. 外部函数没有static修饰,所定义的函数可以在所有工程文件中被调用。3.内部函数与外部函数的区别外部函数可以在所有地方调用。内部函数,只能在所定义的.c 文件中调用。扩展:在同一作用范围,不允许变量重名。作用范围不同的可以重名。局部范围内,重名的全局变量不起作用。原创 2021-09-17 22:48:48 · 1693 阅读 · 0 评论 -
4. C语言- - -全局,局部,静态变量一篇说明白
4. C语言- - -全局与局部变量1. 普通全局变量概念:int i;int main(){i++;return 0;} 全局变量一般在文件开头定义(main()函数之前,函数之外)。 全局变量作用范围是在所有程序文件中都可以调用,不同文件之间调用使用( extern int i );注意声明时候不要赋值。1.生命周期:程序运行的整个过程,一直存在,直到程序结束。2.注意:定义普通的全局变量的时候,如果不赋初值,那么它的初值默认为0.静态全局变量 static原创 2021-09-17 21:55:05 · 1039 阅读 · 0 评论 -
3. C语言--go--to语句
3. C语言–go–to语句用途:主要用于在一个函数里面实现代码的跳转。注意:在平时少使用goto,避免逻辑混乱,减少出错。 int sum=0, l=1; tou: //跳转标志位只能放在声明变量之后 sum = sum + l; l++; if (l < 100) { goto tou; //跳转语句 } printf("sum = %d\n", sum);...原创 2021-09-17 20:14:35 · 1769 阅读 · 0 评论 -
2、C语言--数据转换&&运算符
2、C语言–数据转换what--------把表达式的运算结果强制转换为所需要的数据类型,称为强制转换。自动转换的原则:占用内存字节数小的(值域小)类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。转换方向:由低精度向高精度方向转换。强制转换的原则: 在赋值语句中等号右边的类型自动转换为等号左边的类型;有些需要在变量前加转换类型符:(float)4;//把4转换为浮点类型4.000000运算符 注意单目运算符 ++;–双目运算符 - + * /三目运原创 2021-09-16 23:07:19 · 374 阅读 · 0 评论 -
1. C语言---输出格式大全
1. C语言—输出格式大全#include<stdio.h>int main(){ //1. 整形输出 int a = 298; //输出十进制用%d printf("1.十进制: a=%d\n", a); //只能采用英文双引号格式,不能用单引号 //2. 输出八进制用%o printf("2.八进制:a = %o\n", a); //3. 使用%#o,可以输出八进制数的前导符(在八进制数前面加一个0,用来标识八进制数), printf("3.前导原创 2021-09-15 16:12:31 · 6467 阅读 · 3 评论 -
C语言--共用体
定义: 共用体是一种特殊的数据类型,允许在相同的内存空间位置存储不同的数据类型。你可以定义一个带多种类型成员变量,但是任何时候只能有一个成员的值有效`for exampleunion Data{int i;float f;char c;double d;int num[10];};现在Data类型的变量可以存储一个整数,一个浮点数,一个字符串,或者整形的数组,注意:共用体占用的内存已足够存储共用体中最大的成员...原创 2021-08-27 23:10:04 · 221 阅读 · 0 评论 -
C语言---结构体数组溢出情况
制作自己的数据类型时在用数组存储数据,如果数据取得太小则会出现两个变量输出的数据合在一起的情况,需要将数据的空间取大一些//正确代码#include<stdio.h>#include<string.h>struct people{ char name[20]; char number[15]; char sex[6]; char yuer[10]; } ; void people_information(struct people man) {原创 2021-08-27 22:31:11 · 1178 阅读 · 0 评论 -
自定义C语言头文件书写格式
自定义C语言头文件书写格式第一步:在工程文件中创建一个文件,在该文件下存放C语言源代码 led.c 和它对应的头文件 led.h第二步:在头文件led.h 内容开头必须写上:#ifndef __LED_H // 如果之前没有定义过 __LED_H#define __LED_H //那么就定义 __LED_H第三步:可以明确列出需要包含的内容比如:系统头文件函数声明宏定义结构体声明…第四步:头文件结束后,必须写上这句代码#endif 第五步:在主文件mian.原创 2021-07-26 23:11:44 · 2019 阅读 · 2 评论 -
%c格式对应的是单个字符,%s格式对应的是字符串
%c格式对应的是单个字符,%s格式对应的是字符串。例:char a;char b[20];scanf("%c",&a); //只能输入一个字符。scanf("%s",b); //可以输入一串不超过20字符的字符串。%c对应类型为char, %s对应类型为char * , 即字符串.用作输入时, 二者参数都要传char * 型.%c输入函数只会对一个字节空间赋值. 而%s会一直赋值,直到输入中遇到空白字符为止.用作输出时, %c传char类型,输出一个字符. %s传char*类型参原创 2021-07-22 22:52:03 · 2372 阅读 · 0 评论