
C语言学习
文章平均质量分 74
一杯烟火
BMS嵌入式软件工程师。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
16进制转十进制函数,十进制转十六进制函数。
计算十位数字:将hex对1000取模,再对100取模,得到十位数字的值,然后将结果左移4位,将结果赋给dec的尾字节(dec[1])。计算个位数字:将hex对1000取模,再对100取模,再对10取模,得到个位数字的值,然后将结果赋给dec的尾字节(dec[1])。计算千位数字:将hex除以1000得到千位数字的值,然后将结果左移4位(即乘以16),并将结果赋给dec的首字节(dec[0])。这样,最终结果即为将十六进制数转换为两个字节的十进制表示,存储在dec数组中。原创 2024-01-26 13:48:38 · 1120 阅读 · 0 评论 -
C语言概述打印hello world
C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程序员之间都得到广泛使用。当前最新的 C 语言标准为 C18 ,在它之前的 C 语言标准有 C17、C11…C99 等。#include <stdio.h>int main(){/* 我的第一个 C 程序 */printf(“Hello, Worl原创 2023-02-06 22:00:14 · 1121 阅读 · 0 评论 -
c语言小白第一课之开发环境的搭建及使用(1.1)
目录一级目录二级目录三级目录1.程序语言发展史2.程序编译过程3.程序错误类型一级目录二级目录三级目录1.程序语言发展史“机器语言”》到“汇编语言”》再到“高级语言”机器语言:普遍来讲就是机器只能识别的0 1 二进制码,就叫做机器语言,现在市面上大部分计算机都是只能识别二进制码。汇编语言:符号语言,用助记符代替机器指令的操作码,用地址符号代替指令或操作数的地址,不同的操作系统或者芯片对应的指令集不一样,所以c语言程序不同平台之间不好移植。(要了解c语言程序的编译过程就会明白)高级语言:目前最原创 2021-05-08 16:09:55 · 275 阅读 · 0 评论 -
C语言特点,二维数组越界问题,常量定义的两种方式,子函数的声明和调用。
在CSDN学习C语言的特点时,发现了有趣的程序,程序用printf库函数打印二维数组里的字符串,这里面前牵涉到数组知识点,printf函数知识点,常量定义知识点,我们就以上知识点对这个程序进行分析。原创 2023-01-07 11:44:05 · 1173 阅读 · 0 评论 -
C语言小白成长课之整型数据(2)
目录整型数据二级目录三级目录整型数据新建项目我们直接在解决方案下创建新的项目即可,右键单击解决方案,然后选择添加,选择新建项目即可!创建项目之后在源文件的地方,添加main.c文件,以.c后缀命名的文件以c语言的规则运行!p5 16分二级目录三级目录...原创 2021-05-10 17:14:58 · 1631 阅读 · 0 评论 -
C语言小白成长课之数据类型,常量,变量,关键字!(2.1)
目录数据类型:常量:变量:内存:命名规则:关键字(c语言中有32个关键字)重点:数据类型:常量:在编写程序时或程序运行时不可以变化的量,实际上就是为了把常量赋予给变量的。常量有以下类型整型,实型(浮点型),字符型,字符串型。变量:变量:在编写程序时或程序运行时可以变化的量,在内存中有实际的存储位置。在监视窗口输入变量i就可以查看变量i的大小,输入&i就可以查看变量i内存中的位置,**输入sizeof(i)**就可以查看i的大小为4个字节。内存:我们选择逐条编译,然后就会看到我原创 2021-05-08 17:38:59 · 367 阅读 · 0 评论 -
int main(int argc, const char * argv[])到底有什么用和Hello,World打印。
此时我们就明白了main函数的两个参数到底是什么数据类型的。而我们在C语言中,知道main函数作为主函数,不能被其它子函数调用,我们写参数,实际上是不参与运算的,所以可以省略不写。原创 2023-01-06 19:47:29 · 1061 阅读 · 0 评论 -
C语言 “illegal type conversion”(非法类型转换)的错误,(利用串口发送字符串时发生的)
错误发生在BSP_Init.c文件的第78行,出现了“illegal type conversion”(非法类型转换)的错误。根据详细信息可以看出,错误可能是由于一个非法的类型转换导致的。原创 2023-12-26 18:02:25 · 2404 阅读 · 0 评论 -
用Chat GPT修改 C语言 打开文件并输出到屏幕程序
代码风格与注释:在编写代码时,我们应该遵循一定的代码风格和注释规范,以提高代码的可读性、可维护性和可复用性。对于这个程序而言,根据具体应用场景不同,还可以进一步优化,例如将文件名和路径等信息作为参数传入函数中,或使用动态内存分配来动态控制数组大小等。综上所述,对于这个程序,我们可以在文件操作、结构体、数组、格式化字符串输出等方面继续深入掌握,并按照实际需求进行进一步优化。例如,对于文件操作和内存分配等,我们可以将它们封装成函数,以便在需要时进行调用,而不必重复编写相同的操作。可以在打开文件之前,使用。原创 2023-05-30 13:40:28 · 1008 阅读 · 0 评论 -
C语言:读入三个字符串并按顺序排序,然后将排好序的结果保存到文件中
需要注意的是,本程序使用 strcpy 函数进行字符串交换,为了避免内存泄漏或内存溢出的情况出现,需要确保拷贝的目标字符串已经开辟好了足够多的存储空间。文件读写是一项常见操作,可以将文件读写的功能封装成一个独立的单元,避免在各处都写类似的代码,提高程序的可维护性和可扩展性。当然,本程序只是一个简化的版本,缺乏足够的错处理和面向对象设计,因此需要更进一步的完善和优化来适应一些更高级的应用场景。此程序是一个简单的文件读写和排序的实现,主要功能是读入三个字符串并按顺序排序,然后将排好序的结果保存到文件中。原创 2023-05-29 14:49:08 · 1230 阅读 · 0 评论 -
C语言中的 #ifdef __cplusplus 和 #endif 的作用
C/C++ 语言是一种静态编译语言,编译器在编译代码之前,会先对源代码进行预处理,这些预处理指令是以 # 开头的特殊指令,用来指示编译器完成某些特定的任务。常见的预处理指令包括#define#ifdef#ifndef#include#pragma等。在编译源程序的时候,编译器首先会处理源程序中的预处理指令,将预处理指令替换成相应的代码,最终生成编译后的代码。在编译后的代码中,预处理指令的代码已经被展开或忽略,直接参与编译和链接。原创 2023-05-26 18:17:48 · 2532 阅读 · 0 评论 -
C语言排序算法学习
排序算法是计算机科学中的一个经典问题,常被用于面试或者课程作业中。下面介绍常见的几种排序算法及其实际举例。原创 2023-03-17 15:45:49 · 416 阅读 · 0 评论 -
C语言递归学习
需要注意的是,递归函数可能会导致栈溢出等问题,因此在使用递归时需要特别小心,尤其是在处理大规模数据时。在这个函数中,当n为0或1时,函数直接返回相应的值,这是基本情况。当n不为0或1时,函数调用自身来计算n-1和n-2的斐波那契数列值,然后将两个值相加,这是递归情况。在这个函数中,当n为0时,函数直接返回1,这是基本情况。当n不为0时,函数调用自身来计算n-1的阶乘,然后将n乘以计算结果,这是递归情况。需要注意的是,递归函数可能会导致栈溢出等问题,因此在使用递归时需要特别小心,尤其是在处理大规模数据时。原创 2023-03-16 17:13:48 · 285 阅读 · 0 评论 -
5000字学习C语言错误处理的四种方式。
C语言中的缓冲区溢出错误通常是由于程序试图向一个已满的缓冲区写入数据,或者从一个空的缓冲区读取数据,导致数据超出了缓冲区的边界。C语言中的类型转换错误通常是由于程序试图将一个类型的值转换为另一个类型,但是转换失败或者转换结果不是预期的类型。C语言中的运行时错误通常是由于代码在运行时出现问题引起的。C语言中的逻辑错误通常是由于代码中的错误逻辑引起的。C语言中的访问不存在的内存地址错误通常是由于程序试图访问未分配或已释放的内存引起的。C语言中常见的错误类型包括:语法错误、逻辑错误、运行时错误和系统错误。原创 2023-03-16 16:25:40 · 2023 阅读 · 0 评论 -
一篇学会c语言预处理命令
C语言预处理器在C语言中,预处理器是一个执行文本替换的程序。在编译器编译代码之前,预处理器会处理代码中的预处理指令,并将其替换为预处理器指定的文本。预处理器指令以“#”开头,不以“;”结尾。以下是C语言中的全部预处理器指令:#define:用于定义宏。可以定义函数宏和对象宏。#include:用于包含头文件。#undef:用于取消宏定义。#ifdef:用于判断某个宏是否已经定义。#ifndef:用于判断某个宏是否未定义。#endif:用于结束#ifdef和#ifndef的条件编译。#if原创 2023-03-15 11:21:04 · 1080 阅读 · 1 评论 -
C语言输入输出函数讲解
C语言中输入输出可以使用标准库函数scanf和printf,分别用于读取用户输入和输出结果到控制台。原创 2023-03-14 08:00:00 · 2039 阅读 · 0 评论 -
C语言 typedef和#define的相同和不同之处
使用typedef可以为结构体定义一个新的名字,以便在代码中更方便地使用。int age;} Person;Person p;p.age = 25;使用typedef可以为指针类型定义一个新的名字,以便在代码中更方便地使用。int a = 10;p1 = &a;p2 = p1;使用typedef可以为函数指针类型定义一个新的名字,以便在代码中更方便地使用。IntFunc f;f = add;使用typedef可以为枚举类型定义一个新的名字,以便在代码中更方便地使用。MONDAY,原创 2023-03-14 08:00:00 · 427 阅读 · 0 评论 -
C语言共用体学习(一篇学会)
共用体是C语言中的一种特殊数据类型,它允许不同的数据类型存储在同一个内存空间中,但是同一时刻只能有一种数据类型被使用。定义共用体的方法与定义结构体类似,只不过关键字是"union"而不是"struct"。其中,union_name是共用体的名称,member1、member2、…、membern是共用体的成员。共用体的大小是所有成员中最大的成员的大小,因为所有成员共用同一段内存空间,因此共用体中的不同成员值可能互相影响。原创 2023-03-13 14:24:28 · 668 阅读 · 0 评论 -
C语言结构体(一篇学会)
..其中,是结构体类型的名称,定义了结构体的成员,是一个或多个结构体变量的名称。int age;nameage和salary,分别是字符数组、整数和浮点数类型。这将创建两个名为p1和p2的person类型的结构体变量。原创 2023-03-13 14:19:15 · 476 阅读 · 0 评论 -
C语言字符串的简介、定义、使用与推广
在C语言中,我们可以使用字符数组来表示字符串。也可以使用指针来表示字符串,但是需要注意指针所指向的字符串必须是常量字符串,不能修改。原创 2023-03-12 11:22:00 · 759 阅读 · 0 评论 -
C函数指针和回调函数的应用
返回类型 (*函数指针变量名)(参数列表);这个指针变量add可以指向一个返回类型为int,参数列表为(int, int)的函数。return 0;在这个例子中,函数calculate接受一个函数指针作为参数func,并将其用于计算a和b的值。回调函数是通过函数指针调用的函数。一个常见的应用是在异步编程中,来处理异步事件。\\n");func();return 0;在这个例子中,函数接受一个函数指针作为参数func,并将其用于执行某些操作。原创 2023-03-12 11:18:31 · 245 阅读 · 0 评论 -
C语言指针数组实际应用(嵌入式)
指针是C语言中非常重要的概念之一,它可以让我们直接访问内存中的数据。指针数组则是由多个指针组成的数组,每个指针都可以指向内存中的某个位置。原创 2023-03-11 08:00:00 · 1031 阅读 · 0 评论 -
C语言指针的算术运算
指针的算术运算是 C 语言中一个非常重要的特性。在实际编程中,我们可以利用指针的加、减、比较等运算符来完成各种任务,例如遍历数组、查找元素等。通过本文的介绍,相信读者已经对指针的算术运算有了更深入的理解,并可以在实际编程中灵活运用该特性。原创 2023-03-11 08:00:00 · 843 阅读 · 0 评论 -
C语言指针使用技巧和源码
int *p;char *p;float *p;int *p[10];例如,定义一个指向整型变量的指针变量p,并将其初始化为指向变量numint *p = #这里,p是一个指向整型变量num的指针。通过*p可以访问num// 输出10另外,可以定义一个指向数组的指针变量p,并将其初始化为指向数组arr这里,p指向数组arr的首元素。通过*(p+i)可以访问arr[i]// 输出3除了这些基本的指针类型,还可以使用函数指针、指针数组、多级指针等高级的指针类型,来实现更加灵活和高效的程序编写。原创 2023-03-10 11:25:33 · 635 阅读 · 0 评论 -
C语言枚举使用技巧
C语言枚举是一种用户自定义数据类型,它允许程序员定义一个变量,并将其限制为一组预定义的常量。这些常量被称为“枚举值”,并且可以通过名称进行引用。在C语言中,枚举值是整数类型,它们的值默认从0开始递增,但是程序员可以显式地为枚举值分配一个值。其中,enum_name是枚举类型的名称,value1、value2、value3等是该枚举类型所包含的枚举值。这里,variable是一个名为“variable”的枚举类型变量,其值为value1。原创 2023-03-10 11:14:34 · 1688 阅读 · 0 评论 -
C语言传递数组给函数&从函数返回数组&指向数组的指针
如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为形式参数。原创 2023-03-03 19:36:21 · 1952 阅读 · 0 评论 -
C语言数组&二维数组
C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个单独的变量,比如 runoob0、runoob1、…、runoob99,而是声明一个数组变量,比如 runoob,然后使用 runoob[0]、runoob[1]、…、runoob[99] 来代表一个个单独的变量。所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。原创 2023-03-03 19:31:03 · 626 阅读 · 0 评论 -
C语言作用域(变量生存的空间)学习
任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。C 语言中有三个地方可以声明变量:在函数或块内部的局部变量在所有函数外部的全局变量在形式参数的函数参数定义中让我们来看看什么是局部变量、全局变量和形式参数。原创 2023-03-02 17:19:21 · 558 阅读 · 0 评论 -
C语言函数阐述
在 C 语言中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。原创 2023-03-02 17:14:26 · 443 阅读 · 0 评论 -
C语言循环控制语句Break,goto,continue语句讲解
循环控制语句改变你代码的执行顺序。通过它你可以实现代码的跳转。原创 2023-03-01 18:16:37 · 934 阅读 · 0 评论 -
C语言循环语句do while和嵌套循环语句讲解
不像 for 和 while 循环,它们是在循环头部测试循环条件。在 C 语言中,do…while 循环是在循环的尾部检查它的条件。do…while 循环与 while 循环类似,但是 do…while 循环会确保至少执行一次循环。语法C 语言中 do…请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止。原创 2023-03-01 18:07:12 · 2312 阅读 · 0 评论 -
C while 循环&for循环
只要给定的条件为真,C 语言中的 while 循环语句会重复执行一个目标语句。语法在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。原创 2023-02-28 09:19:37 · 192 阅读 · 0 评论 -
C语言循环语句简述
有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了更为复杂执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的流程图:C 语言提供了以下几种循环类型。点击链接查看每个类型的细节。原创 2023-02-28 09:13:03 · 217 阅读 · 0 评论 -
C语言Switch语句用法
一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。原创 2023-02-27 10:39:44 · 1168 阅读 · 0 评论 -
C语言if判断语句的三种用法
C语言if判断语句的三种用法,一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。原创 2023-02-27 08:34:29 · 6890 阅读 · 1 评论 -
C语言几种判断语句简述
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。原创 2023-02-26 08:00:00 · 2106 阅读 · 0 评论 -
C语言运算符&赋值运算符&杂项运算符&运算符优先级
下表列出了 C 语言支持的赋值运算符:运算符 描述 实例= 简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A。原创 2023-02-26 08:00:00 · 993 阅读 · 0 评论 -
C语言运算符&逻辑运算符&位运算符
下表显示了 C 语言支持的所有关系逻辑运算符。假设变量 A 的值为 1,变量 B 的值为 0,则:运算符 描述 实例实例请看下面的实例,了解 C 语言中所有可用的逻辑运算符:实例当上面的代码被编译和执行时,它会产生下列结果:Line 1 - 条件为真Line 2 - 条件为真Line 3 - 条件为假Line 4 - 条件为真。原创 2023-02-25 09:06:43 · 656 阅读 · 0 评论 -
C语言运算符&算术运算符&关系运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符,并提供了以下类型的运算符:算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符。原创 2023-02-25 09:02:13 · 390 阅读 · 0 评论 -
C语言几大存储类型介绍
存储类定义 C 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类:autoregisterstaticexternauto 存储类auto 存储类是所有局部变量默认的存储类。上面的实例定义了两个带有相同存储类的变量,auto 只能用在函数内,即 auto 只能修饰局部变量。原创 2023-02-24 09:20:35 · 276 阅读 · 0 评论