【数据结构初阶】数组栈和链式队列的实现

发布时间:2022-11-30 数据结构 数据结构初阶 C语言
努力真的要贯穿人的一生吗? 你能活成你想要的样子吗? 真的不知道! 一、栈的概念及结构 栈是一种特殊的线性表,它只允许 在一端插入和删除数据的操作。进行插入和删除数据的一端称为栈顶,另一端什么也不干的称为栈低。 我们插入数据和删除数据也有专业的名词,分别称为压栈和出栈,栈这样的结构遵循先进后出的原则。 二、栈的实现(动态数组栈) 2.1 挑选实现栈的结构 实现栈我们手头上有两种方式可以实现栈这样的结构,一种是数组一种是链表的形式,我们可以对比两者,挑选一下数组栈 和 链式栈哪个实现起来更优一...

【C语言】二分法查找等

发布时间:2022-11-30 C语言
一、自己实现 1、编写程序数一下 1到 100 的所有整数中出现多少个数字9 /*#include<stdio.h>void main(){ int count1 = 0; int count2 = 0; int count; for (int i = 0; i < 100; i++) { //判断数字的类别:求个位数,判断是否等于9 if (i<90) { int k = i % 10;//求个位 if (k==9) { count1++; ...

C专家编程 第3章 分析C语言的声明 3.6 typedef int x[10]和#define x int[10]的区别

发布时间:2022-12-01 TYPEDEF和#DEFINE C专家编程 C语言
    3.6 typedef int x[10]和#define x int[10]的区别      typedef看成是一种彻底的“封装”类型----在声明它之后不能再往里面增加别的内容,可以用其他类型说明符对宏类型名进行扩展,但对typedef所定义的类型却不能那样做。     #define peach int     unsigned peach i; /*没问题*/     typedef int banana;     unsigned banana i; /*错误!非法*/     在几个...

C陷阱与缺陷 第1章 词法“陷阱” 1.2 &和|不同于&&和||

    &和|不同于&&和||     易犯错误:将按位运算符&与逻辑运算符&&调换,或者将按位或|与逻辑运算符||调换。      这里简单总结一下:     &和|是按位运算符,它们是以位为单位进行操作。结果值可能不为0或者1。     &&和||是逻辑运算符,它们不是以位为单位进行操作,结果值只能为0或者1,并且会进行短路求值运算。     如果你明白并且注意到了这些,相信你会出现更少的错误。    ...

C语言课程设计------食品仓库管理系统

发布时间:2022-11-30 网络 网络协议 P2P C语言
篇幅较长,有些代码可能存在冗余,仅供参考。发现有问题欢迎提出。 目录 1.题目描述: 2.代码解析 (1)结构体 (2)主要设置函数 (3)主函数: (4)编写菜单: (5)添加食品信息: (6)Count (7)添加食品库存 (8)修改食品信息:  (9)查找信息 (10)统计 (11)食品信息排序  (12)月报表 (13) 显示食品信息 (14)删除食品信息 (15)退出系统菜单 1.题目描述: 编写一个程序来管理食品仓库的货物,系统能实现以下功能: 食品信息输入 添加新食品信息 食品出库 修改食...

C<5>use arrays to manipulate mutiple data(note)

发布时间:2022-12-01 C 算法 C语言 C# 学习
目录  1,initialization of one-dimensional arrays 1,syntax: 2,some rules 2,algorithm:bubble sort algorithm(起泡排序in Chinese) P.S. why does it calledbubble sort? 2,Define and reference two-dimensional arrays(matrix) 1,define the type of a matrix  2, initializat...

【C语言】递归的经典问题(模拟strlen,阶乘,斐波那契数列,汉诺塔,青蛙跳台阶)

发布时间:2022-12-01 C++ C语言_STUDY 算法 C语言
以下我分享的是关于C语言递归的比较经典的题,有些题提供了多种解法,希望可以帮助你打开思路,如果你有更多的解法,欢迎评论区留言哟~ 目录 一、输入1234,输出1 2 3 4 二、模拟strlen功能 1)递归 2)计数器 3)指针-指针 三、递归与迭代 1)求一个数的阶乘 1.递归 2.迭代 2)求斐波那契数列 1.递归 2.迭代 四、汉诺塔问题 五、青蛙跳台阶问题 一、输入1234,输出1 2 3 4 #include<stdio.h>void my_print(int a){if(a&g...

C++的语法问题总结

发布时间:2022-12-01 C++ 开发语言 C语言
前言 C++ 的细节语法,项目中遇到的问题在这里统一总结,持续更新 一、C++函数默认参数 class A { void func(int a = 20);};void A::func(int a){ std::cout << a << std::endl;} 成员函数的缺省参数在声明时定义即可,包括模板的默认参数也是在声明时定义即可。 二、函数返回值是函数指针 #include <iostream>using namespace std;void f(){ ...

第一章 C语言概述

发布时间:2022-12-01 C++ 软件工程 C语言
C语言发展史 C语言诞生 1972年,贝尔实验室的丹尼斯·里奇(Dennis Ritch)和肯·汤普逊(Ken Thompson)在开发UNIX操作系统时,在B语言的基础上设计了C语言。 K&R C / 经典C 1987年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritch)合著的The C Programming Language(《C语言程序设计》)第1版是公认的C标准,通常称为“K&R C”或 “经典C”。 ANSI C / C89 / I...

C语言 main函数之前 和 main函数之后执行函数

发布时间:2022-12-01 算法 开发语言 C语言
问题 今天遇到个问题,执行bin文件,有些预期之外的函数在main函数之前被执行了,最后发现是有一个加了__attribute__((constructor)) 的同名函数,没找到那个函数,就执行了我代码里的同名函数。最后通过修改函数名解决了。 建议 用__attribute__((constructor))修饰的时候,加上static修改,并且不能和别的函数同名! 添加方法 main之前执行函数 函数加__attribute__((constructor)) 会在main函数之前执行 可以指定优先级(从...

C专家编程 第3章 分析C语言的声明 3.8 理解所有分析过程的代码段

    主要的数据结构是一个堆栈,我们从左向右读取,把各个标记依次压入堆栈,直到读到标识符为止然后我们继续向右读入一个标记,也就是标识符右边的那个标记。接着,观察标识符左边的那个标记(需要从堆栈中弹出)。     struct token {     char type;      char string[MAXTOKENLEN]; }; /*保存第一个标识之前的所有标记*/ struct token stack[MAXTOKENS]; /*保存刚读入的那个标记*/ struct token this; ...

C语言-数组

发布时间:2022-12-01 C/C++ 算法 数据结构 C语言
1. 概念 分类 根据数据类型的不同: 数值数值字符数组指针数组结构数组 概念 C语言数组在存储时,是行优先 多维数组下,如二维数组,可以看成是嵌套:一个数组可以作为外部数组的一个元素 C语言数组是静态的,不能插入或删除元素(数组一旦被定义,占用的内存空间就是不可改变的,但是可以修改和读取数值),如果要改变一个数组,就要再造一个数组 数组类型 注意:数组也是有类型的!!! int a[10]; // 数组a的类型是int [10] 数组与内存 数组内存时连续的,(连续的内存为指...

C语言静态通讯录

发布时间:2022-12-01 C语言小项目 算法 开发语言 C语言
目录 一、模块化编程 1.头文件 1.1符号常量的定义 1.2功能模块的声明 1.3结构体的定义 2.主代码部分 2.1该部分介绍 2.2各个函数模块 3.测试代码部分 二、各个功能模块的实现 2.1初始化通讯录函数 2.2寻找 PeoInfo 结构体数组成员姓名函数 2.3添加联系人函数 2.4删除联系人函数 2.5查找联系人函数 2.6修改联系人函数 2.7排序联系人函数 2.8打印联系人函数 三、简易通讯录全部代码 3.1头文件 3.2主代码 3.3测...

C语言知识点---位段

发布时间:2022-12-01 C语言学习 算法 C语言 C++
位段的声明和结构体的声明是类似的,但有两个不同 1.位段的成员必须是int、unsigned int 或 signed int; 2.位段的成员名后边有一个冒号和一个数字; 位段的内存分配: 1.位段的成员可以是int,unsigned int, signed int 或者是char(属于整型家族里面)类型 2.位段的空间是按照需要以4个字节(int)或者1个字节(char)的方式开辟的 3.位段涉及很多不确定性因素,位段是不跨平台的,注重可移植性的程序应避免使用位段 4.注意,变量所分配的内存空间不可...

C++第三章知识点合集(逻辑运算符,逻辑表达式,if语句用法详解(多分支,双分支,单分支以及If的嵌套使用),switch 实现实现多条件判断 while,do while for循环详解等

发布时间:2022-12-01 C++ C# 开发语言 C语言
目录 第三章知识点合集 一.逻辑运算符 (见第一章知识点合集) 二.逻辑表达式 条件表达式 单分支if语句 双分支if 语句 多分支if语句 If的嵌套使用(进行多条件判断) switch 实现分支结构(实现多条件判断) break的作用: 循环结构 循环三要素 while循环 do…while循环 三.for循环 循环中断 Break的作用: continue语句 循环嵌套 第三章知识点合集 一.逻辑运算符 (见第一章知识点合集) 二.逻辑表达式 逻辑表达式:用逻辑运算符将两个表达式连接起来的式子。 ...

C专家编程 第5章 对链接的思考 5.6 轻松一下---看看谁在说话:挑战Turning测验

发布时间:2022-12-02 C专家编程 挑战TURNING测验 C语言
    Alan Turing被公认为计算机领域最伟大的理论先行者之一。     为了纪念他,美国计算机协会把它的最高年度奖项命名为Turing Award(图灵奖)。     1983年的图灵奖授予了Dennis Ritchie和Ken Thompson,以表彰他们在UNIX和C语言上的杰出贡献。     如果你对人工智能的发展和局限性很有兴趣,推荐阅读What Computers Still Can't Do : A Critique of Artificial Reason一书。 ...

C基础笔记

发布时间:2022-12-02 C++ C 开发语言 C语言
1、C语言编译步骤 #include<stdio.h>// 定义一个宏#define PI 314 /*定义一个宏*/int main(){ printf(Hello); #if 0 printf(条件编译成立); #endif #if 12 printf(条件编译成立); #endif #if abc printf(条件编译成立); #endif printf(PI 的值 %lf \n, PI); return 0;} 1)预编译 带#的语句就是预处理指令,预处理指令在预处...

C++第一章知识点合集(变量,关系运算符,逻辑运算符,ascll值,强制类型转换与自动类型转换)

发布时间:2022-12-01 C++ 开发语言 C语言
目录 程序基本框架 怎么定义一个变量 变量的命名规则 算数运算符 %:取余运算符 自增运算符 自减运算符 赋值运算符 复合赋值运算符 关系运算符 逻辑运算符 逻辑运算符优先级问题 十进制转换为二进制、八进制、十六进制 1、十进制转二进制 十进制转八进制 十进制转十六进制 原码补码反码 Ascll值 强制类型转换 自动类型转换 const常量 第一章知识点合集 程序基本框架 #include<iostream> using namespace std; int main() { } 怎...

07-字符与字符串-c语言初学系列

发布时间:2022-12-02 C语言 C++ 开发语言 C语言教案PPT
知识要点 8.1 单个字符的输入输出 8.2 字符数组与字符串 8.3 字符串的输入和输出函数 8.4 字符串操作函数 8.5 二维字符串数组 8.1 单个字符的输入输出 C语言头文件“stdio.h”中定义了两个专门用于单个字符输入输出的函数getchar()和putchar()。 一、字符输入函数getchar() 作用是从输入设备(如键盘)读取一个字符。 函数getchar()没有参数,其一般形式为 getchar( ); 其执行结果是从输入设备得到一个字符。例如: char c;c=getcha...

第三章 运算符与表达式

发布时间:2022-12-01 C++ 软件工程 C语言
赋值运算符 C语言接受多重赋值,c=b=a=68 等同 c=(b=(a=68))。 类似 a=6+(c=3+8) 的赋值是合法的但可读性差。 数据对象、左值、右值 形如 bmw = 2022,赋值运算符左侧是一个变量名,右侧是赋给该变量的值,读作“把值2022赋给变量bmw”。 赋值运算的目的是把值储存到内存位置上, 用于储存值的存储区称为对象(object)。 左值(lvalue) 是用于标识对象的标识符(变量名就是一个标识符)或表达式。例如,使用变量名或指针表达式标识一个数据对象。因此,对...

快速排序的基本思想,C和Python具体代码实现

发布时间:2022-12-02 排序算法 算法 研0 C语言
快速排序 一种交换排序 基本思想 首先,在待排序表L[1…n]中任取一个元素(通常取首元素)作为枢轴,记作pivot; 通过一趟排序将L分成两部分L[1…k-1]和L[k+1…n],其中L[1…k-1]的元素都小于pivot,L[k+1…n]都大于pivot,pivot放在了最终位置,这个过程称为一次划分; 然后分别递归地对两个子表重复上述过程,直至每部分内只有一个元素或空为止。 详细代码 C语言: #include<stdio.h>void QuickSort(int *A,int...

08-09 - 函数重载分析 & C++和C相互调用

发布时间:2022-12-01 C++深度解析教程 C语言 开发语言 C++
---- 整理自狄泰软件唐佐林老师课程 1. 重载的概念 同一个标识符在不同的上下文有不同的意义 1.1 函数重载 用 同一个函数名定义不同的函数 当 函数名 和 不同的参数 搭配时函数的含义不同 1.2 函数重载的条件 至少满足下面的一个条件: 参数 个数 不同 参数 类型 不同 参数 顺序 不同 1.3 下面的两个函数可以构成重载函数吗? 可以构成,因为参数顺序不同! 1.4 当函数默认参数遇上函数重载会发生什么? 例1:下图中两个fun函数都满足调用,因而报错: 例2:无法匹配所有...

分支语句与循环语句

发布时间:2022-12-02 C语言
C语言中共分有五种类型的语句: 控制语句 函数调用语句 空语句 表达式语句 复合语句 控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选 择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。 可分成以下三类: 条件判断语句也叫分支语句:if语句、switch语句; 循环执行语句:do while语句、while语句、for语句; 转向语句:break语句、goto语句、continue语句、return语句。 分支语句 if if语...

C语言详细知识点(上)

发布时间:2022-12-01 C语言 数据结构 算法 后端
❄️下一篇❄️C语言详细知识点(下) 一、C语言概述 1、C语言的主要特点 程序一组计算机能识别和执行的指令 1、什么是计算机语言? 机器语言:计算机工作基于二进制,从根本上来说计算机只能识别和接受由0和1组成的指令。计算机能直接识别和接受的二进制代码称为机器指令。机器指令的集合就是该计算机的机器语言。 符号语言:它用英文字母和数字表示一个指令,例如用add代表“加”,sub代表“减”。又称为符号汇编语言或汇编语言 高级语言:语言功能性很强,且不依赖于具体的机器,用它写出的程序对任何型号的计算机...

用4种方法交换两个数

发布时间:2022-11-30 C语言
目录 1.引入变量 2.利用函数 3.利用赋值 4.利用异或^ 1.引入变量   ”=“是赋值,赋值是从右向左进行,”==“是等于 例如:a=b,将b的值赋给a 那么交换两个数就需要引入一个变量 #include<stdio.h>int main(){ int a = 0; int b = 0; int t = 0;//引入一个变量 scanf(%d%d, &a,&b); t = a; a = b; b = t; printf(%d %d, a,b); retur...

初阶C语言 第二章-------《函数》知识点+思维导图+基本练习题+超详细(自定义函数,库函数,函数递归)+通俗易懂(建议收藏) 绪论

发布时间:2022-12-01 开发语言 C语言从入门到精通 C语言
绪论                书接上回,上回我们将C语言中的《控制语句》进行了详细的书写,这次我将在第二章写道《函数》,他不仅仅是名字和数学上的函数一样,其内涵其实是一样的!希望你可以通过我的这篇文章深刻的认识到函数的具体内容 (建议电脑观看) 。 目录 1.函数是什么? 2.库函数 3.自定义函数 4.函数的参数 4.1 实际参数(实参) 4.2:形式参数(形参) 5.函数的调用 5.1传值调用: 5.2传址调用: 5.3基本练习: 6.函数的嵌套调用和链接访问 6.1:嵌套调用 6.2 链接...

C-哥德巴赫猜想

发布时间:2022-12-03 C C语言
题目描述 Goldbach's conjecture[哥德巴赫猜想]: Every even integer[偶数] greater than 2 can be expressed as the sum of two primes[质数]. Write a C program to decompose the even integers between 4 and 100 into the sum of two primes. The format of the result is as follows,...

初阶C语言 第三章-------《数组》(一维数组,二维数组,数组越界.....) 知识点+思维导图+基本练习题+超详细+通俗易懂(建议收藏)

发布时间:2022-12-01 开发语言 C语言从入门到精通 C语言
绪论        书接上回,我们讲完了初等《函数》章,这次讲的是数组,该章理论偏多,故习题就会少一些,但后面会有3个在我们代码学习中非常重要的3个习题,这篇共2400字,相信如果你认真的看过,肯定会收获巨大! 目录 1.一维数组 1.1数组的创建 1.2数组的初始化: 1.3一维数组的使用 1.4 一维数组在内存中的存储 2.二维数组 2.1数组的创建: 2.2数组初始化: 2.3 二维数组的使用: 2.4 二维数组在内存中的存储:  3.数组越界   4.基本练习: 思维导图 1.一维数组  ...

C-产生冠军

发布时间:2022-12-03 C C语言
题目描述 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。 如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。 根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之后,确定是否已经实际上产生了冠军。 样例输入 3Alice BobSmith JohnAlice Smith5a cc dd eb ea d0样...

C语言——函数详解

发布时间:2022-12-03 C语言学习 开发语言 C语言
目录 1.函数是什么? 2.C语言中函数的分类和使用 2.1.库函数的使用 2.2.自定义函数的使用 3.函数的参数 3.1.实际参数 3.2.形式参数 4.函数的调用 4.1.传值调用 4.2.传址调用 5.函数的嵌套调用和链式访问 5.1.嵌套调用 5.2.链式访问 6.函数的声明和定义  6.1.函数的声明 6.2.函数的定义 7.函数递归 7.1.什么是递归? 7.2.递归的两个必要条件  7.3.递归与迭代 1.函数是什么? 前言:我们最常见的函数概念出现在数学中,但是C语言中函数概念你清...

C++双人射击小游戏代码可复制

发布时间:2022-12-01 C++ 电脑小知识 开发语言 C语言
//单机版枪战游戏,喜欢就拿走,把赞留下//by floatiy#include<iostream>#include<cstdio>#include<windows.h>#include<conio.h>using namespace std;int SIZ = 20;HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);COORD coord;HANDLE hCon;enum Color { DARKBLUE = 1, D...

C语言程序设计(王晓云 主编)2.9 习题

发布时间:2022-12-01 C++ 算法 C语言
2.9 习题 选择题答案:  一、选择题 1.以下结果为整数的表达式(设有int i ; char c ; float f ; )是(  )。 A) i+f B) i*c C) c+f D) i+c+f 答案:B 2.以下不正确的语句(设有int p,q)是( D)。 A)p*=3 B) p/=q C) p+=3 D) p&&=q 3.以下使i 的运算结果为4 的表达式是( D) 。 A) int i =0 , j=0 ; B) int i=1 , j=...

C和指针 第18章 运行时环境 18.2 C和汇编语言的接口

发布时间:2022-11-30 C和指针 C和汇编语言的接口 C语言
18.2 C和汇编语句的接口     这个试验已经显示了编写能够调用C程序或者被C程序调用的汇编语句程序所需要的内容。与这个环境相关的结果总结如下---你的环境肯定在某些方面与它不同。     首先,汇编程序中的名字必须遵循外部标识符的规则。在这个系统中,它必须以一个下划线开始。     其次,汇编程序必须遵循正确的函数调用/返回协议。存在两种情况:从一个汇编语句程序调用一个C程序和C程序调用一个汇编程序。为了从汇编程序调用C程序:     1.如果寄存器d0、d1、a0或a1保存了重要的值,它们必须在调...

C/C++内存管理——内存分布、动态内存管理、operator new与operator delete函数、new和delete的实现原理、定位new表达式

发布时间:2022-12-03 数据结构 算法 C语言 C++ 学习
目录 一、C/C++内存管理 二、C语言中动态内存管理方式:malloc/calloc/realloc/free 三、C++内存管理方式 3.1new/delete操作内置类型 3.2new和delete操作自定义类型 四、operator new与operator delete函数 4.1operator new与operator delete函数 4.2重载operator new 与 opreator delete(了解) 五、new和delete的实现原理 5.1内置类型 5.2自定义类型 六、...

杂记,主要包含各种锁

发布时间:2022-12-01 LINUX 知识点 C语言
① 【shell脚本】 DT:%G(标准计数周的年份)%m(月份)%d(日)_%H(小时)%M(分钟)%S(秒) linux命令大全: 参考链接:https://www.runoob.com/linux/linux-command-manual.html ②【条件编译】 ifeq:判断两个参数是够相等,相等时条件成立为true,不相等为false ifdef:判断变量是否被定义,非空则为真(没有定义的变量为空) ifneq:ifeq关键字相反,用来判断参数是否不相等。 经典场景: 在 &...

《数据结构》稀疏矩阵的转置后的矩阵和三元组表

发布时间:2022-12-01 数据结构 算法 C语言
 熟悉稀疏矩阵的三元组顺序存储方式。 稀疏矩阵如右下所示,输出矩阵和三元组表 用转置算法求转置矩阵并输出转置后的矩阵和三元组表  代码:  #include <malloc.h>#include <stdio.h> #define M 8#define N 8#define MaxSize 100typedef int ElemType;typedef struct { int r; //行号 int c; //列号 ElemType d; ...

C语言——操作符(详解)

发布时间:2022-12-03 C语言学习 开发语言 C语言
目录 前言 1.操作符的分类 2.算术操作符 2.1.算数操作符的简介 2.2.除法操作符(/)的使用 2.3.取余操作符(%)的使用 3.移位操作符 3.1.什么是移位操作符 3.2.原码、反码和补码 3.3.左移操作符(<<) 3.4.右移操作符(>>)  4.位操作符 4.1.为操作符种类 4.2.按位与操作符的使用  4.3.按位或操作符的使用 4.4.按位异或操作符的使用 5.赋值操作符 5.1.赋值操作符的使用 5.2.复合赋值符 6.单目操作符 6.1.单目操作符介绍...

2022/11/21、 C语言。数组

发布时间:2022-12-02 C-入门 C语言
数组的概念 数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的 在C语言中,数组属于构造数据类型 数组的几个名词 数组:一组相同数据类型数据的有序的集合数组元素: 构成数组的每一个数据。数组的下标: 数组元素位置的索引(从0开始) 数组的应用场景 一个int类型的变量能保存一个人的年龄,如果想保存整个班的年龄呢?第一种方法是定义很多个int类型的变量来存储第二种方法是只需要定义一个int类型的数组来存储 #include <stdio.h>int main(i...

动态内存管理❀C

发布时间:2022-12-01 后端 开发语言 C语言
❀动态内存管理的意义 基本的内存开辟方式: int val = 20;//在栈空间上开辟四个字节int arr1[10];//在栈空间上开辟40个字节的连续空间 但是以上内存开辟的内存空间大小是固定的,不能后续自动改变空间大小。 当实际需要的空间大小比事先开辟的大小小就会造成空间浪费,当不够就需要再另外开辟空间。 但是对于空间的需求,不仅仅是上述的情况。 有时候我们需要的空间大小在程序运行的时候才能知道,编译时开辟空间的方式就不能满足了。 因此就需要动态内存管理的能力。且C语言提供了一些相关函数。 ❀...

破开C暗夜的第一道光(2)——高质量代码风格

发布时间:2022-12-02 C++ 算法 经验分享 C语言
  太多人会写代码,却只有极少的程序员可以将代码写出美感,你想让自己的代码成为高质量代码吗?下面这些建议一定可以帮到你。 以下是高质量代码需遵循的建议,下方有优秀代码示例。 一、文件结构 【建议1】为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。 【建议2】用#include <filename.h>格式来引用标准库的头文件(编译器从标准库目录开始搜索)。 【建议3】用#include “filename.h”格式来引用非标准库的头文件(编译器先从...

C语言:同名全局变量不报错

发布时间:2022-12-02 C语言
今天偶然/突然发现,如果在不同的c文件中定义了同名的全局变量、并且不初始化(即不赋初值),则编译链接时不会报错。 而且它们会占用相同的内存空间(这句话有待亲手验证下)! 这个应该是在《C陷阱与缺陷》里面有提到。 根据问元芳的逻辑: 问题:全局变量的Bug; 原因:不明(或者是C语言的编译规则就是这样的); 解决方案: 嗯,跨文件全局变量是个大坑,我现在都是尽量把常用的全局变量写在一个文件里,放进一个结构体,加static, 再写个函数返回指向这个结构体的指针。其他需要使用的地方先取指针,再操作成员变量。...

驱动中的c语言难点

发布时间:2022-12-01 C++ LINUX驱动开发 开发语言 C语言
一、指针 结构体指针 是一种指向一个结构体的指针 struct led_operations *p_led_opr; //创建指向led_operations结构体的指针 函数指针函数指针 的本质是一个指针,该指针的地址指向了一个函数,所以它是指向函数的指针 //int (*p)(int a, int b); //也可以使用这种方式定义函数指针其中int为返回值,*p作为一个整体,代表的是指向该函数的指针,args为形参列表。其中p被称为函数指针变量 二、数据类型 %s  用来输出一个字符串...

c语言-----操作符全家桶

发布时间:2022-12-04 C语言
2.原码,反码,补码 3.移位操作符(移(2进制)位操作符) 4.位操作符 (针对整数且为2进制位,均为补码计算) 5.赋值操作符 6.单目操作符 7.关系操作符 8.逻辑操作符 9.条件操作符 10.逗号表达式 11.下标引用,一个数组名,一个索引值 12.结构体初步了解 13.表达式求值—重点 1.算术操作符 对于除法操作符,两边的操作数都是整数,执行的是整数除,若想得到小数,除号两端至少有一个为浮点数/取模(取余),计算的是整除之后的余数 取模操作符(%),计算的是整除之后的余数,只能用整型...

第十三章 linux-中断-中断控制器(GIC)

发布时间:2022-12-03 驱动开发 LINUX C语言 ARM开发 UBUNTU
第十三章 linux-中断-中断控制器(GIC) 前言 上篇大概讲了一下ARM的异常处理,但是处理器是如何知道是哪一种异常或中断的呢?这就需要中断控制器了。 linux中断管理机制 操作系统有个非常重要的部分外设,比如鼠标,键盘,声卡等。处理器与外设计算能力与处理速度上是不在一个数量级的。假设处理器要得到键盘或鼠标的事件,如果处理器发出一个请求信号,它就一直再轮询键盘或鼠标的响应,由于键盘鼠标响应速度慢得多,这就会导致浪费很多资源。但是如果键盘或鼠标产生数据了,去通知处理器,处理器停下当前工作来...

【C语言】求二进制中1的个数

发布时间:2022-11-30 算法 C语言
这个题不会: 写一个函数返回参数二进制中 1 的个数。 比如: 15 0000 1111 4 个 1 参考答案: #include<stdio.h>//方法1:思路:/*采用循环,直至数据为0不再执行循环;1. 用该数据模2,检测其是否能够被2整除: 可以:则该数据对应二进制比特位的最低位一定是0,否则是1,如果是1给计数加12. 如果n不等于0时,继续1循环*///方法1:思路:/*采用循环,直至数据为0不再执行循环;1. 用该数据模2,检测其是否能够被2整除: 可以:则该数据对应二进制比特...

初识 C++ 函数参数引用和指针及左值和右值

发布时间:2022-12-02 C++ C语言
 普通函数 double up(double x) { return 2.0* x; } double a = 3; double b = up(a); 这种情况是值传递,double x 是函数形参,a是函数实参。在执行double b = up(a)语句时,先开辟存储临时变量x的位置,把a的值拷贝到x位置,在开辟一个临时temp位置,存储函数返回值2*x。运行到 = 时把temp位置的值拷贝到变量b的位置。这个过程的好处和不足: 好处:a本身得到了保护,因为up函数运行过...

PTA 浙大版《C语言程序设计实验与习题指导(第4版)》题目集

PTA 浙大版《C语言程序设计实验与习题指导(第4版)》题目集 未完结,持续更新中… 题目链接练习5-1求m到n的和练习5-2找两个数中最大者练习5-3字符金字塔习题5-1符号函数习题5-2使用函数求奇数和习题5-3使用函数计算两点间的距离习题5-4使用函数求素数和习题5-5使用函数统计指定数字的个数习题5-6使用函数输出水仙花数习题5-7使用函数求余弦函数的近似值习题5-8空心的数字金字塔习题6-1分类统计字符个数习题6-2使用函数求特殊a串数列和习题6-3使用函数输出指定范围内的完数习题6-4使用函数...

[c语言]小白入门理解c语言指针

发布时间:2022-12-01 学习 开发语言 C语言
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 前言: 一、sizeof和strlen的用法 二、了解指针 1.利用整形数组来了解指针 2.利用字符数组来了解指针 3.利用字符指针来理解指针 三,总结 前言: 在这里我们要先了解sizeof和strlen的作用 再通过他们来理解数组名,取地址数组名,和指向数组里面元素的指针,和取地址数组元素等的意义 一、sizeof和strlen的用法 sizeof是操作符,strlen是包...