在 C/C++ 中,const 用于定义常量,防止数据被意外修改。 ★ 什么时候需要为指针加上const: 保证数据安全:如果函数不需要修改指针指向的数据,用 const 可以防止意外修改,确保数据安全。 void func(const int *ptr){ // 只能读取数据,无法修改 } 提升代 ...
标准库 IO 输入输出功能并非C语言的组成部分,ANSI标准定义了相关的库函数 输入输出 <stdio.h> 流stream是与设备关联的数据的源或者目的地。 文本流:由文本行组成的序列 不同系统的特性可能不一样,比如行最大长度和行结束符 二进制流:未经处理的字节序列 程序运行时,默认打开 stdi ...
C语言之static和extern关键字 1.作用域 标识符可见的区域,访问和重名 由声明的位置所决定 1.1 代码块作用域 Block Scope 花括号 {} 之内 函数形参(不会为函数内同名变量所隐藏) ```C void myFunction(int x) { int x = 10; // ...
用筛选法求100以内的素数 //用筛选法求100以内的素数 #include <stdio.h> int main_6__1(void) { int arr[101] = { 0 }; for (int i = 0; i < 101; i++)//赋值 arr[i] = i; arr[0] = ar ...
数组是一组有序数据的集合。数组中各数据的排列有一定规律,下标代表数据在数组中的序号 用一个数组名和下标来唯一的确定数组中的元素 数组中的每一个元素都属于同一个数据类型。不能把不同类型的数据放在同一个数组中 将数组和循环结合起来,可以有效的处理大批量的数据 怎样定义和引用一维数组 一维数组是数组中最简 ...
输入两个正整数 m 和 n,求其最大公约数和最小公倍数 //输入两个正整数 m 和 n,求其最大公约数和最小公倍数 #include <stdio.h> int main(void) { int m, n, iMax, iMin, iGcd; scanf("%d %d", &m, &n); if ( ...
为什么需要循环控制 循环结构或称重复结构 几乎每一种计算机高级语言都提供了循环控制,用来处理需要进行的重复操作 大多数的应用程序都会包含循环结构 循环结构和顺序结构、选择结构是结构化程序设计的3中基本结构,它们是各种复杂程序的基本构成单元。 用 while 语句实现循环 while 语句的一般形式: ...
有3个整数 a,b,c,由键盘输入,输出其中最大的数 //有3个整数 a,b,c,由键盘输入,输出其中最大的数 #include <stdio.h> int main(void) { int a, b, c; scanf("a=%d b=%d c=%d", &a, &b, &c); if (a > ...
在顺序结构中,各语句都是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必做任何判断。这是最简单的程序结构。实际上,在很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作任务,或者从给定的两种或多种操作选择其一。这就是选择结构要解决的问题。 选择结构和条件判断 由 ...
《FFmpeg开发实战:从零基础到短视频上线》一书的“5.1.2 把音频流保存为PCM文件”介绍了如何把媒体文件中的音频流转存为原始的PCM音频,在样例代码的转存过程中,解码后的PCM数据未经任何加工处理,就直接保存到二进制文件。也就是说,原音频的采样频率是多少,PCM文件的采样频率也是多少;原音 ...
(1)确定思路单击和双击的效果分别是怎样的(此文章采用简单的延时函数不涉及中断)。首先可以定义一个普通延时delay和一个标志位count变量,这里需有个延时阈值咱们直接可以宏定义B值(这里需要注意宏定义的值一定要大一些否则双击效果不会触发)。 (2)在按下按键等待松开后,让变量count自增去与B ...
集群配置(cluster config) 所有节点共同维护同一份集群配置,共享集群内节点的相关配置信息: { node_1 = {addr = "127.0.0.1:10014", expire = "2024-01-01 00:00:00" }, node_2 = {addr = "127.0.0 ...
演示环境 OS: Arch Linux x86_64 Kernel: linux-6.11.1 GCC: 14.2.1 演示代码(main.c) int main(void) { return -2147483648 < 2147483647; } 编译和链接 gcc -std=c90 -m32 m ...
正点原子《ESP32物联网项目实战》全新培训课程上线啦!正点原子工程师手把手教你学!熟练掌握ESP-IDF开发,突破ESP32入门难题! 一、课程介绍 本课程针对ESP32的入门和基础外设进行系统教学,内容包括环境搭建、编程软件使用、外设基础知识、模块驱动及多个实战项目。课程旨在帮助学员掌握ESP- ...
目录位运算位运算和逻辑运算区别位运算的几点注意异或的运算规则异或的经典问题:两数交换位操作建议使用宏定义好后使用位运算整型提升问题左移和右移概念移位运算容易误解成移位赋值 位运算 位运算和逻辑运算区别 位运算是一位对应一位的对所有位逐一进行运算(逐比特位进行运算).逻辑运算是以计算表达式的真假为主进 ...
目录typedeftypedef功能简化类型声明typedef与宏的区别typedef的用法注意不要过度使用typedef为什么typedef属于存储类型关键字 typedef 历史的误会-typedef也许应该是typerename,typedef就是用来给类型重命名的 typedef功能 typ ...
目录注释奇怪的注释C风格的注释无法嵌套一些特殊的注释注释的规则建议反斜杠'\'反斜杠有续行的作用,但要注意续行后不能添加空格回车也能起到换行的作用,那续行符的意义在哪?反斜杠的转义功能单引号和双引号字面值,字符串,字符,字符变量的大小为什么sizeof('1')的大小是4 ?char类型一直在发生截 ...
目录浮点数与"零值"精度损失:验证浮点数的差值是否存在精度损失浮点数直接比较验证如何进行浮点数比较浮点数与"零值"比较null 浮点数与"零值" 精度损失: 浮点值与实际值不等,可能偏大可能偏小,都属于精度损失 验证浮点数是否存在精度损失 验证浮点数的差值是否存在精度损失 浮点数直接比较验证 结论: ...
目录宏定义数值宏常量字符串宏常量用define宏定义注释符号?程序的编译过程预处理中宏替换和去注释谁先谁后?如何写一个可靠的宏函数do-while-zero结构do-while-zero的评价宏定义中的空格宏只能在main函数上面定义吗?宏的作用范围#undef宏替换是在函数调用之前进行.块中进行# ...
目录变量程序的本质:二进制文件1.变量:内存上的某个位置开辟的空间2.变量的初始化:3.为什么要有变量4.局部变量与全局变量5.变量的大小由类型决定6.任何一个变量,内存赋值都是从低地址开始往高地址1.1 关键字auto1.2 关键字register什么样的变量可以采用register? 变量 程序 ...