手机网站做落地页开源网站模板cms

web/2025/10/7 18:41:09/文章来源:
手机网站做落地页,开源网站模板cms,高端终端网站设计类网站,清控人居建设集团网站一、程序调试的debug宏 1、程序调试的常见方案 单步调试、裸机LED调试、打印信息、log文件 利用调试器进行单步调试#xff08;譬如IDE中#xff0c;Jlink#xff09;适用于新手#xff0c;最大的好处就是直观#xff0c;能够帮助找到问题。缺点是限制性大、速度慢。裸机… 一、程序调试的debug宏 1、程序调试的常见方案 单步调试、裸机LED调试、打印信息、log文件 利用调试器进行单步调试譬如IDE中Jlink适用于新手最大的好处就是直观能够帮助找到问题。缺点是限制性大、速度慢。裸机使用LED、蜂鸣器等硬件调试适合单片机裸机程序。printf函数打印调试比较常用作为程序员必须学会使用打印信息调试。好处是具有普遍性几乎在所有的情况下都能用。log文件日志文件是系统运行过程中在特定时候会打印一些调试信息日志文件记录下来这些调试信息以供后续查找追查问题。适合于系统级或者大型程序的调试。 2、打印信息不能太多也不能太少 调试信息太少会不够信息找到问题所在。调试信息太多会有大量的无用的信息淹没有用信息导致有用信息无法看见等于没有。 3、调试(DEBUG)版本和发行(RELEASE)版本的区别 DEBUG版本就是包含了调试信息输出的版本在程序测试过程中会发布debug版本这种版本的程序运行时会打印出来调试信息/log文件这些信息可以辅助测试人员判断程序的问题所在。DEBUG版本的坏处是输出调试信息占用了系统资源拖慢了系统运行速度。因此DEBUG版本的性能低于RELEASE版本。RELEASE版本就是最终的发布版本相较于DEBUG版本的功能代码是一样的但是去掉了所有的调试信息。适合最终测试通过要发布的程序因为去掉了调试信息所以程序的运行效率要更高。DEBUG和RELASE版本其实是一套源代码。源代码中是有很多的打印调试信息的语句的如何来控制生成DEBUG和RELEEASE版本靠条件编译靠一个宏。 4、debug宏的实现原理 1DEBUG宏大概的原理是 #ifdef DEBUG #define dbg() printf() #else #define dbg() #endif 2工作方式 如果要输出DEBUG版本则在条件编译语句前加上#define DEBUG即可这样程序中的调试语句dbg()就会被替换成printf从而输出如果要输出RELEASE版本则去掉#define DEBUG则dbg()会被替换成空则程序中所有的dbg()语句无效这样的程序编译时就会生成没有任何调试信息的代码。 二、debug宏的使用方法 1、应用程序中DEBUG宏 #ifdef DEBUG #define DBG(...) fprintf(stderr, DBG(%s, %s(), %d): , __FILE__, __FUNCTION__, __LINE__); fprintf(stderr, __VA_ARGS__) #else #define DBG(...) #endif 注__FILE__等是C语言中的预定义宏具有特殊的含义譬如__FILE__表示当前正在编译的c文件的文件名。 2、内核中的DEBUG宏 #ifdef DEBUG_S3C_MEM #define DEBUG(fmt, args...) printk(fmt, ##args) #else #define DEBUG(fmt, args...) do {} while (0) #endif三、void类型的本质 1、C语言属强类型语言 1强类型语言和弱类型语言 强类型语言中所有的变量都有自己固定的类型这个类型有固定的内存占用有固定的解析方法弱类型语言中没有类型的概念所有变量全都是一个类型一般都是字符串的程序在用的时候再根据需要来处理变量。 2C语言是典型的强类型语言 C语言中所有的变量都有明确的类型。因为C语言中的一个变量都要对应内存中的一段内存编译器需要这个变量的类型来确定这个变量占用内存的字节数和这一段内存的解析方法。 2、数据类型的本质含义 1数据类型决定变量的内存占用数和内存的解析方法。 2如果一个变量没有确定的类型就是所谓的无类型会导致编译器无法给这个变量分配内存也无法解析这个变量对应的内存。因此得出结论不可能有没有类型的变量。 3C语言中可以有没有类型的内存。 在内存还没有和具体的变量相绑定之前内存就可以没有类型。实际上纯粹的内存就是没有类型的内存只是因为和具体的变量相关联后才有了确定的类型其实内存自己本身是不知道的而编译器知道我们程序在使用这个内存时知道类型所以会按照类型的含义去进行内存的读和写。 3、void类型的本质 1void类型的正确的含义是不知道类型不确定类型还没确定类型。 2void a; 定义了一个void类型的变量含义就是说a是一个变量而且a肯定有确定的类型只是目前还不知道a的类型还不确定所以标记为void。 4、为什么需要void类型 1什么情况下需要void类型 在描述一段还没有具体使用的内存时需要使用void类型。 2void的一个典型应用案例就是malloc的返回值。 malloc函数向系统堆管理器申请一段内存给当前程序使用malloc返回的是一个指针这个指针指向申请的那段内存。malloc刚申请的这段内存尚未用来存储数据malloc函数也无法预知这段内存将来被存放什么类型的数据所以malloc无法返回具体类型的指针解决方法就是返回一个void *类型告诉外部返回的是一段干净的内存空间尚未确定类型。所以在malloc之后可以给这段内存读写任意类型的数据。 3void *类型的指针指向的内存是尚未确定类型的因此我们后续可以使用强制类型转换强行将其转为各种类型。 这就是void类型的最终归宿就是被强制类型转换成一个具体类型。 4void类型使用时一般都是用void *而不是仅仅使用void。 四、语言中的NULL 1、NULL在C/C中的标准定义 1NULL不是C语言关键字本质上是一个宏定义 #ifdef _cplusplus // 条件编译 #define NULL 0 #else #define NULL (void *)0 // 这里对应C语言的情况 #endif C的编译环境中编译器预先定义了一个宏_cplusplus程序中可以用条件编译来判断当前的编译环境是C的还是C的。NULL的本质是0但是这个0不是当一个数字解析而是当一个内存地址来解析的这个0其实是0x00000000代表内存的0地址。(void *)0这个整体表达式表示一个指针这个指针变量本身占4字节地址在哪里取决于指针变量本身但是这个指针变量的值是0也就是说这个指针变量指向0地址实际是0地址开始的一段内存。 2、从指针角度理解NULL的本质 1为什么要让一个野指针指向内存地址0处 主要是因为在大部分的CPU中内存的0地址处都不是可以随便访问的一般都是操作系统严密管控区域所以应用程序不能随便访问。所以野指针指向这个区域可以保证野指针不会造成误伤。如果程序无意识的解引用指向0地址处的野指针则会触发段错误。 3、为什么需要NULL 让野指针指向0地址处安全。一个特殊标记。 int *p NULL; // 定义p时立即初始化为NULL p xx; if (NULL ! p) {*p // 在确认p不等于NULL的情况下才去解引用p } p NULL // 用完之后p再次等于NULL 一般比较一个指针和NULL是否相等不写成if (p NULL)而写成if (NULL p)。原因是第一种写法中如果不小心把写成了则编译器不会报错但是程序的意思完全不一样了而第二种写法如果不小心把写成了则编译器会发现并报错。 4、注意不要混用NULL与\0 \0是一个转义字符对应的ASCII编码值是0本质就是00是一个字符对应的ASCII编码值是48本质是480是一个数字它就是0本质就是0NULL是一个表达式是强制类型转换为void *类型的0本质是0。\0用法是C语言字符串的结尾标志一般用来比较字符串中的字符以判断字符串有没有到头0是字符0对应0这个字符的ASCII编码一般用来获取0的ASCII码值0是数字一般用来比较一个int类型的数字是否等于0NULL是一个表达式一般用来比较指针是否是一个野指针。 五、运算中的临时匿名变量 1、C语言和汇编的区别 语言叫高级语言汇编语言叫低级语言。低级语言的意思是汇编语言和机器操作相对应汇编语言只是CPU的机器码的助记符用汇编语言写程序必须拥有机器的思维。因为不同的CPU设计时指令集差异很大因此用汇编编程的差异很大。高级语言C语言它对低级语言进行了封装C语言的编译器来完成给程序员提供了一个靠近人类思维的一些语法特征人类不用过于考虑机器原理而可以按照自己的逻辑原理来编程。譬如数组、结构体、指针……更高级的语言如java、C#等只是进一步强化了C语言提供的人性化的操作界面语法在易用性上、安全性上进行了提升。 2、C语言的一些“小动作” 1高级语言中有一些元素是机器中没有的。 2高级语言在运算中允许我们大跨度的运算。 意思就是低级语言中需要好几步才能完成的一个运算在高级语言中只要一步即可完成。譬如C语言中一个变量i要加1在C中只需要i即可看起来只有一句代码。但实际上翻译到汇编阶段需要3步才能完成第1步从内存中读取i到寄存器第2步对寄存器中的i进行加1第3步将加1后的i写回内存中的i。 3、使用临时变量来理解强制类型转换 4、使用临时变量来理解不同数据类型之间的运算 六、c库函数和API函数的关系 1、操作系统的调用通道API 操作系统负责管理和资源调配应用程序负责具体的直接劳动之间的接口就是API函数。当应用程序需要使用系统资源譬如内存、譬如CPU、譬如硬件操作时就通过API向操作系统发出申请然后操作系统响应申请帮助应用程序执行功能。 2、C库函数和API的关系 API只提供极简单没有任何封装的服务函数这些函数应用程序是可用的但是不太好用。对这个API进行二次封装把它变得好用一些于是就成了C库函数。完成一个功能有相应的库函数可以完成也有API可以完成用哪个都行。譬如读写文件API的接口是open write read close库函数的接口是fopen fwrite fread fclose。fopen本质上是使用open实现的只是进行了封装。封装肯定有目的添加缓冲机制。 3、不同平台windows、linux、裸机下库函数的差异 不同操作系统的API是不同的完成一个任务所调用的API不同。不同操作吸人的库函数也是不同的但相似性高一些。在一个操作系统上写的应用程序不可能直接在另一个操作系统上面编译运行要进行移植。跨操作系统可移植平台譬如QT、譬如Java语言。 七、main函数返回给谁 1、函数为什么需要返回值 函数在设计的时候设计了参数和返回值参数是函数的输入返回值是函数的输出。因为函数需要对外输出数据实际上是函数运行的一些结果值因此需要返回值。函数被另一个函数所调用返回值作为函数式的值返回给调用这个函数的地方。函数的返回值就是给调用它的人返回一个值。 2、main函数被谁调用 main函数是特殊的。C语言规定main函数是整个程序的入口。其他的函数只有直接或间接被main函数所调用才能被执行。main函数从某种角度来讲代表了当前这个程序或者说代表了整个程序。main函数的开始意味着整个程序开始执行main函数的结束返回意味着整个程序的结束。谁执行了这个程序谁就调用了main。谁执行了程序或者说程序有哪几种被调用执行的方法 3、linux下一个新程序执行的本质 1linux中在命令行中去./xx执行一个可执行程序。 2可以通过shell脚本来调用执行一个程序。 3可以在程序中去调用执行一个程序fork exec。 4总结 有多种方法都可以执行一个程序但是本质上是相同的。linux中一个新程序的执行本质上是一个进程的创建、加载、运行、消亡。linux中执行一个程序其实就是创建一个新进程然后把这个程序丢进这个进程中去执行直到结束。新进程是被谁开启在linux中进程都是被它的父进程fork出来的。 5分析 命令行本身就是一个进程在命令行底下去./xx执行一个程序其实这个新程序是作为命令行进程的一个字进程去执行的。即一个程序被它的父进程所调用。main函数返回给调用这个函数的父进程。父进程调用子进程来执行一个任务然后子进程执行完后通过main函数的返回值返回给父进程一个答复。这个答复一般是表示子进程的任务执行结果完成了还是错误了。0表示执行成功负数表示失败 八、argc、argv与main函数的传参 1、谁给main函数传参 其父进程给main函数传参并且接收main的返回值。 2、为什么需要给main函数传参 1main函数不传参是可以的也就是说父进程调用子程序并且给子程序传参不是必须的。 int main(void)这种形式就表示我们认为不必要给main传参。 2有时候我们希望程序有一种灵活性所以选择在执行程序时通过传参来控制程序中的运行达到不需要重新编译程序就可以改变程序运行结果的效果。 3、给main传参是怎样实现的 1给main传参通过argc和argv这两个C语言预订的参数来实现 2argc是int类型表示运行程序的时候给main函数传递了几个参数 3argv是一个字符串数组这个数组用来存储多个字符串每个字符串就是我们给main函数传的一个参数。 argv[0]就是我们给main函数的第一个传参argv[1]就是传给main的第二个参数···· 4、给main传参是怎样实现的 程序调用有各种方法但是本质上都是父进程fork一个子进程然后字进程和一个程序绑定起来去执行exec函数族我们在exec的时候可以给他同时传参。程序调用时可以被传参也就是main的传参是操作系统层面的支持完成的。 5、给main传参要注意什么 main函数传参都是通过字符串传进去的。程序被调用时传参各个参数之间是通过空格来间隔的。在程序内部如果要使用argv那么一定要先检验argc。 1NULL不是C语言关键字本质上是一个宏定义 #ifdef _cplusplus // 条件编译 #define NULL 0 #else #define NULL (void *)0 // 这里对应C语言的情况 #endif C的编译环境中编译器预先定义了一个宏_cplusplus程序中可以用条件编译来判断当前的编译环境是C的还是C的。NULL的本质是0但是这个0不是当一个数字解析而是当一个内存地址来解析的这个0其实是0x00000000代表内存的0地址。(void *)0这个整体表达式表示一个指针这个指针变量本身占4字节地址在哪里取决于指针变量本身但是这个指针变量的值是0也就是说这个指针变量指向0地址实际是0地址开始的一段内存。 2、从指针角度理解NULL的本质 1为什么要让一个野指针指向内存地址0处 主要是因为在大部分的CPU中内存的0地址处都不是可以随便访问的一般都是操作系统严密管控区域所以应用程序不能随便访问。所以野指针指向这个区域可以保证野指针不会造成误伤。如果程序无意识的解引用指向0地址处的野指针则会触发段错误。 3、为什么需要NULL 让野指针指向0地址处安全。一个特殊标记。 int *p NULL; // 定义p时立即初始化为NULL p xx; if (NULL ! p) {*p // 在确认p不等于NULL的情况下才去解引用p } p NULL // 用完之后p再次等于NULL 一般比较一个指针和NULL是否相等不写成if (p NULL)而写成if (NULL p)。原因是第一种写法中如果不小心把写成了则编译器不会报错但是程序的意思完全不一样了而第二种写法如果不小心把写成了则编译器会发现并报错。 4、注意不要混用NULL与\0 \0是一个转义字符对应的ASCII编码值是0本质就是00是一个字符对应的ASCII编码值是48本质是480是一个数字它就是0本质就是0NULL是一个表达式是强制类型转换为void *类型的0本质是0。\0用法是C语言字符串的结尾标志一般用来比较字符串中的字符以判断字符串有没有到头0是字符0对应0这个字符的ASCII编码一般用来获取0的ASCII码值0是数字一般用来比较一个int类型的数字是否等于0NULL是一个表达式一般用来比较指针是否是一个野指针。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有网站可以做备案吗网站推广网络

注意点 private File image;//对应的就是表单中文件上传的那个输入域的名称,Struts2框架会封装成File类型的private String imageFileName;// 上传输入域FileName 文件名private String imageContentType;// 上传文件的MIME类型 单个文件 1 package cn.itcast.ac…

网站为什么会出现死链互联网保险案例

啥是MCU,MCU科普 附赠自动驾驶学习资料和量产经验:链接 MCU是Microcontroller Unit 的简称,中文叫微控制器,俗称单片机,是把CPU的频率与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等…

医疗室内设计网站推荐网络营销策划书模板

本篇文章主要介绍了详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件,具有一定的参考价值,有兴趣的可以了解一下使用vue-cli构建的vue项目,webpack的配置文件是分散在很多地方的,而我们需要修改的是build/webpack.base…

led外贸网站合肥做网站yuanmus

缺省参数 调用函数时,缺省参数的值如果没有传入,则被认为是默认值。 下例会打印默认的age,如果age没有被传入. def printinfo( name,age 35 ): # 打印任何传入的字符串 print "Name: ", name print "Age ", age #调…

深圳seo网站桂林北站到象鼻山多远

1 永远不要质疑二哈▼2 睡觉也不耽误练功▼3 谁还没为数学考试受过伤呢?▼4 可能我的嘴巴安装了笑话过滤器吧▼5 我书读得少,你别吓唬我▼6 希望狗没事儿▼7 海王的微信壁纸事实证明,会计确实不赚钱▼你点的每个赞,我都认真…

做网站 做app企业+php网站建设

最近的研究需要做一个软件,从一些方面中学习了下面的。当然,这些都是需求只是初步框架。也创下了基本的设计和开发,只是让软件公司可能对软件整体的了解需求和促进软件有一个粗略的估计。公司 实现的根本目的 现有的软件的情况下(…

深圳租赁住房和建设局网站企业网站建设公司网络服务

2023年8月25日&#xff0c;周五上午 今天上午学习设计模式中的策略模式时&#xff0c;发现这个有点像很多卡通片里面的变身器... #include<iostream>//alien hero是外星英雄的意思 //在《少年骇客》中&#xff0c;主角可以通过变身器变成10种外星英雄 class AlienHero{ …

网站备案需要网站建设完毕不万网域名注册官网的阿里云

Python 程序设计入门&#xff08;009&#xff09;—— 元组的操作 目录 Python 程序设计入门&#xff08;009&#xff09;—— 元组的操作一、元组和列表的区别二、创建元组1、使用赋值语句创建元组2、使用 tuple() 函数创建元组 三、访问元组中的元素1、使用索引访问元组的元素…

企业网站设计公司浅谈中兴电子商务网站建设

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

网站建设管理风险点免域名x网站

1. 普通用户和root用户权限之间的切换2. 权限的三个w2.1. 什么是权限&#xff08;what&#xff09;2.1.1. 用户角色2.1.2. 文件属性 2.2. 怎么操作权限呢&#xff1f;&#xff08;how&#xff09;2.2.1. ugo-rwx方案2.2.2. 八进制方案2.2.3. 文件权限的初始模样2.2.4. 进入一个…

室内设计师联盟app搜索引擎优化免费

select和poll都只提供了一个函数:select或者poll函数。而epoll提供了三个函数&#xff0c;epoll_create,epoll_ctl和epoll_wait&#xff0c;epoll_create是创建一个epoll句柄&#xff1b;epoll_ctl是注册要监听的事件类型&#xff1b;epoll_wait则是等待事件的产生。epoll除了提…

网站建设运营协议书东营市建设信息网站

前端jd要求&#xff1a;了解一门后端开发语言优先 解决方案之Node.js 前言常见的后端开发语言一、什么是 Node.js二、学习 Node.js 的前置知识三、学习 Node.js 的步骤1、Node.js 的安装2、Node.js 的基本语法和 API模块导入和导出文件读写操作HTTP 服务器命令行参数 3、Node.j…

成都市网站备案国内网站开发 框架

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个二叉搜索树的根节点root&#xff0c;和一个整数k&#xff0c;请你设计一个算法查找其中第k个最小元素&#xff08;从1开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#x…

企业网站的高跳出率应该如何解决快速排名seo软件

文章目录 获取源码方法一方法二方法三了解S3C6410内核相关1 设备文件2 mach-文件3 plat-文件配置real6410编译镜像测试问题1获取源码 方法一 进入官网,如下界面,点击http, 再依次

技术支持 东莞网站建设防水工程网站开发申请微信支付

2427: [HAOI2010]软件安装 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 960 Solved: 380[Submit][Status][Discuss]Description 现在我们的手头有N个软件&#xff0c;对于一个软件i&#xff0c;它要占用Wi的磁盘空间&#xff0c;它的价值为Vi。我们希望从中选择一些软件…

行业门户网站营销案例挖矿网站开发

使用ts的最佳境界&#xff1a;化类型于无形 在项目中使用ts可以带来类型智能提示与校验的诸多好处。同时&#xff0c;为了减少类型标注&#xff0c;达到化类型于无形的效果&#xff0c;CabloyJS引入了ioc和依赖查找的机制。在上一篇文章中&#xff0c;我们创建了一个业务模块t…

在线flash相册网站源码做网站的公司利润多少呢

目录 引言 一、生成对抗网络的基本原理 1 初始化生成器和判别器 2 训练判别器 3 训练生成器 4 交替训练 5 评估和调整 二、生成对抗网络的应用领域 1 图像生成与编辑 2 语音合成与音频处理 3 文本生成与对话系统

网站开发详细流程图中国机房建设公司排名

运行Hello World Hello World 工程可以运行在模拟器中&#xff0c;或者运行在真机设备中。本示例先以选择将 Hello World 工程运行在模拟器中进行说明&#xff0c;如果选择运行在真机设备中&#xff0c;需要先对工程进行签名&#xff0c;然后才能运行在真机设备中。 DevEco S…

戴南做网站wordpress 下载统计

前言ANSYS程序中的SHELL181单元是用于复合材料层合板结构分析比较好的单元之一。原文在ANSYS程序的在线帮助中&#xff0c;这篇文章是它的译文&#xff0c;是我们从专业角度对原文的翻译。目的在于帮助那些英语水平不高&#xff0c;而且从事复合材料结构计算分析的技术人员能够…

江苏 网站建设网站分享到朋友圈

需求&#xff1a;文字内容位置保持不变&#xff0c;向下增加&#xff0c;背景框随之同步扩展。 1.UGUI 九宫格 拉伸 对背景框图片资源处理&#xff0c;避免图片拉伸。 (10条消息) unity UGUI 九宫格 拉伸_unity九宫格拉伸_野区捕龙为宠的博客-CSDN博客 2.背景框添加组件 3.…