当前位置: 首页 > news >正文

广州网站建设服务哪家好长沙营销型网站

广州网站建设服务哪家好,长沙营销型网站,公众平台推广,全球网站免费空间注册题目都摘于网上 嵌入式系统中经常要用到无限循环#xff0c;如何用C编写死循环 while(1){}或者for(;#x1f609; 内存分区 代码区#xff0c;全局区#xff08;全局变量#xff0c;静态变量#xff0c;以及常量#xff09;#xff0c;栈区#xff0c;堆区 const关键…题目都摘于网上 嵌入式系统中经常要用到无限循环如何用C编写死循环 while(1){}或者for(; 内存分区 代码区全局区全局变量静态变量以及常量栈区堆区 const关键字的含义作用 const意味着只读 定义常量修饰的变量不可变 可以保护被修饰的东西防止意外的修改增强程序的健壮性 1.const int a; #变量a不可修改 2.int const a; #变量a不可修改 3.const int *a; #指针指向的值不可修改指针的指向可以修改 4.int * const a; #指针的指向不可以修改指针指向的值可以修改 5.const int * const a; #指针指向的值和指针的指向都不可以修改 6.int const * const a; #指针指向的值和指针的指向都不可以修改const和函数 通常在函数形参中如果形参是一个指针为了防止在函数内部修改指针指向的数据就可以用const来限制 void StringCopy(char* strDestination, const char *strSource); 还可以表示函数返回一个常量放在函数的返回值的位置 const char * GetString(void); static关键字的含义作用 A.在函数体一个被声明为静态的变量在这一函数被调用过程中维持其值不变; B.在模块内但在函数体外一个被声明为静态的变量可以被模块内所有函数访问但不能被模块外其它函数访问。它是一个本地的局变量 C.在模块内一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是这个函数被限制在声明它的模块的本地范围内使用; volatile关键字的含义作用 volatile的变量是说这变量可能会被意想不到地改变编译器在用到这个变量时不需要对它进行优化。 malloc、free和new、delete的区别 malloc 和 free 是 C 语言标准库中的函数而 new 和 delete 是 C 中的操作符。 malloc 和 free 以字节为单位进行内存管理需要手动指定需要分配或释放的字节数而 new 和 delete 以对象为单位进行内存管理无需手动计算需要分配或释放的字节数编译器会自动计算。 malloc 返回的是 void* 类型的指针需要显式地进行类型转换而 new 返回的是分配对象的指针不需要显式地进行类型转换。 new 和 delete 可以自动调用构造函数和析构函数而 malloc 和 free 不会调用构造函数和析构函数。 new 失败时会抛出 std::bad_alloc 异常而 malloc 失败时返回 NULL。 在 C 中使用 new 和 delete 可以确保类型安全而 malloc 和 free 可能存在类型不匹配的问题。 给定一个包含非负整数的 m x n 网格 grid 请找出一条从左上角到右下角的路径使得路径上的数字总和为最小。c语言如何运行的 1预处理(Preprocessing)用于将所有的#include头文件以及宏定义替换成其真正的内容2编译(Compilation)将经过预处理之后的程序转换成特定汇编代码的过3汇编(Assemble)将上一步的汇编代码转换成机器码产生的文件叫做目标文件(.o)4链接(Linking)链接过程将多个目标文件以及所需的库文件(.so等)链接成最终的可执行文件(.exe)。一个现代编译器的主要工作流程源代码(.c)→ 预处理器(.i) → 编译器 (.s)→ 目标代码 (.o)→ 链接器 → 可执行程序 。指针函数和函数指针的区别 针函数和函数指针是两个不同的概念 指针函数Pointer to Function指针函数是一个具有指针类型返回值的函数。它是一个函数但其返回值是一个指针指向函数或者指向其他类型的数据。可以像使用函数一样调用这个指针函数通过调用指针函数获取返回的指针值然后可以对该指针值进行进一步的操作。 函数指针Function Pointer函数指针是指向函数的指针变量。它是一个变量存储了函数的地址可以通过函数指针来调用这个函数。函数指针可以像普通函数一样被调用通过函数指针调用函数可以避免直接使用函数名来调用函数提供了灵活性和动态性。 总结区别 指针函数是一个函数但其返回值是一个指针类型。 函数指针是指向函数的指针变量可以存储函数地址并通过函数指针调用函数。 指针函数用于返回指向函数或其他类型数据的指针。 函数指针用于实现函数回调动态选择调用的函数或在运行时替换函数。 指针函数和函数指针在用法和概念上有所不同在具体编程场景中使用时要注意区分。 进程和线程的区别 1调度线程作为调度和分配的基本单元进程作为拥有资源的基本单位 2并发性不仅进程可以并发执行同一进程内的线程也可以并发执行。 3拥有资源进程是拥有资源的基本独立单元线程不拥有资源但可以访问进程内的资源 引用与指针有什么区别 1引用必须被初始化指针不必。 2不存在指向空值的引用但是存在指向空值的指针。 1指针是实体占用内存空间引用是别名与变量共享内存空间。 2指针不用初始化或初始化为NULL引用定义时必须初始化。 3指针中途可以修改指向引用不可以。 4指针可以为NULL引用不能为空。 5sizeof(指针)计算的是指针本身的大小而sizeof(引用)计算的是它引用的对象的大小。 6如果返回的是动态分配的内存或对象必须使用指针使用引用会产生内存泄漏。 7指针使用时需要解引用引用使用时不需要解引用‘*’。 8有二级指针没有二级引用。 大端和小端 大端存储将一个数的低位字节的内容放在高地址处高位字节的内容放在低地址处 小端存储将一个数的低位字节的内容放在低地址处高位字节的内容放在高地址处 ROM与RAM ROM是Read OnlyMemory的缩写RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据而RAM通常都是在掉电之后就丢失数据典型的RAM就是计算机的内存。 IO口工作方式上拉输入 下拉输入 推挽输出 开漏输出 请说明总线接口USRT、I2C、USB的异同点串/并、速度、全/半双工、总线拓扑等 I2C协议时序图 IC协议有两根线一根SCL时钟线一根SDA数据线如图可以看到开始信号和结束信号的电平状态。开始后因为IIC总线可以挂在很多设备不超过8个所以先发送一个设备地址选中这个设备设备地址最后一位代表了是写还是读。选中设备后再发送寄存器地址代表选中某个寄存器再开始传输数据。 八位设备地址7位从机地址读/写地址 再给地址添加一个方向位位用来表示接下来数据传输的方向 0表示主设备向从设备(write)写数据 1表示主设备向从设备(read)读数据 I2C总线在传送数据过程 有三种类型信号 它们分别是开始信号、结束信号和应答信号。 开始信号SCL保持高电平SDA是高电平到低电平的切换 结束信号SCL保持高电平SDA是低电平到高电平的切换 应答信号接收数据的 IC 在接收到 8bit 数据后向发送数据的 IC 发出特定的低电平脉冲表示已收到数据。CPU 向受控单元发出一个信号后等待受控单元发出一个应答信号CPU 接收到应答信号后根据实际情况作出是否继续传递信号的判断。若未收到应答信号由判断为受控单元出现故障。 IIC信号在数据传输过程中当SCL1高电平时数据线SDA必须保持稳定状态不允许有电平跳变只有在时钟线上的信号为低电平期间数据线上的高电平或低电平状态才允许变化。SCL1时 数据线SDA的任何电平变换会看做是总线的起始信号或者停止信号。 FIQ中断向量入口地址 FIQ和IRQ是两种不同类型的中断ARM为了支持这两种不同的中断提供了对应的叫做FIQ和IRQ处理器模式ARM有7种处理模式。 FIQ的中断向量地址在0x0000001C而IRQ的在0x00000018。 SPI四种模式简述其中一种模式画出时序图 sizeof和strlen的区别? 答案sizeof是运算符在编译时即计算好了而strlen是函数要在运行时才能计算。 在某工程中要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务? 答案 int p; p (int)0x67a9; *p 0xaa66; 堆和栈的区别 堆Heap和栈Stack是两种常见的内存管理方式它们在内存分配和释放的机制上有一些区别。 分配方式 堆堆内存的分配由程序员手动管理通过动态分配例如使用malloc()、new等函数来申请内存。堆分配的内存需要显式地释放否则可能导致内存泄露。 栈栈内存的分配与函数调用的方式紧密相关。每当调用一个函数时函数的局部变量和参数会在栈上动态分配函数调用结束后这些变量和参数会自动被释放。 内存管理 堆堆内存的管理是由程序员手动控制的。在申请堆内存后需要负责释放这块内存以避免内存泄漏。如果不及时释放会造成内存的浪费。 栈栈内存的管理由编译器自动完成无需程序员手动干预。当函数调用结束时栈上的局部变量会自动释放内存被回收不存在内存泄露的问题。 内存分配速度 堆堆内存的分配速度相对较慢因为需要在堆中搜索合适大小的空闲空间。在大型程序中频繁地进行堆内存分配和释放可能会导致效率下降。 栈栈内存的分配速度相对较快仅仅是栈指针的移动所以栈上的内存分配和释放操作非常高效。 存储大小 堆堆内存的大小通常比较大由操作系统管理。在现代计算机系统中堆的大小通常受到操作系统或运行时环境的限制。 栈栈内存的大小通常比较小由编译器或运行时环境进行限制。栈的大小是有限制的一般为数MB到数十MB。 总结区别 堆和栈是两种内存管理方式分配方式和内存管理方式不同。 堆内存需要手动分配和释放而栈内存会自动分配和释放。 堆内存的分配速度较慢栈内存的分配速度较快。 堆内存的大小通常比较大而栈内存的大小通常较小。 数组和链表的区别 数组存数据按照顺序存储固定大小 链表存数据随机大小可以动态改变 struct和union比较 相同点二者都是常见的结构都是由多个不同的数据类型成员组成 不同点联合体中所有的成员公用一块地址空间即联合体只存放一个被选中的成员内存空间是最长成员占用的空间需要进行内存对齐 结构体所有成员占用空间是累加的其所有成员都存在不同成员存在不同的地址内存空间等于所有成员占用的空间之和同样需要内存对齐。 数组指针和指针数组 数组指针是一个指针指向一个数组。 指针数组由n个指针类型的数组元素组成。 数组指针只是一个指针变量似乎是C语言里专门用来指向二维数组的它占有内存中一个指针的存储空间。 指针数组是多个指针变量以数组形式存在内存当中占有多个指针的存储空间。 常量指针和指针常量 常量指针指针指向的值不可以修改指针的指向可以修改 指针常量指针指向的值可以改指针的指向不可以改 zigbee OSAL是怎么样的 是一种基于事情驱动的轮询式操作系统所提供的管理功能有 1任务登记任务初始化任务触发 2任务间消息传递 3任务同步 4中断处理 5计时器 6内存分配 不断轮询遍历所有任务事件事件被置位后就会被调度执行该任务需要注意的是每次任务被调度时都只处理一个事件并在处理完后清除该事件。 每个任务最多可以同时设置16个事件 任务事件被置位即任务调度主要通过以下两种途径实现 1直接通过调用 osal _ set _ event)给任务事件置位。 2任务调度结束后返回通过返回未处理完的事件位重新置位。在下一轮任务轮询中将继续处理 实时操作系统 (RTOS) 中的任务间通信可以使用以下几种手段 消息传递 (Message Passing): 任务通过发送和接收消息来进行通信。消息可以包含数据和控制信息常见的消息传递机制包括消息队列、邮箱和管道。 信号量 (Semaphore): 信号量是一种同步机制用于控制对共享资源的访问。任务可以使用信号量来申请和释放资源并通过信号量的值来进行同步和互斥操作。 事件标志组 (Event Flags): 任务可以等待或等待特定的事件发生当事件发生时任务可以被唤醒并继续执行。事件标志组可以将多个事件进行组合每个事件可以用一个特定的标志来表示。 邮箱 (Mailbox): 邮箱是一种用于在任务之间传递数据的机制。任务可以将数据放入邮箱中其他任务可以从邮箱中读取数据实现任务间的数据交换。 共享内存 (Shared Memory): 共享内存是一块被多个任务共享的内存区域。任务可以通过读写这块内存来进行数据交换。为了确保并发访问的正确性通常需要使用互斥锁或信号量进行保护。 这些任务间通信的手段可以根据实际需求选择合适的方式在设计实时系统时需要考虑数据的实时性、同步性和互斥性等因素。 面向对象编程Object-Oriented Programming简称OOP的三大特性是 封装Encapsulation封装是将数据属性和操作方法封装在一个对象中对外部隐藏内部实现的细节只提供有限的接口供其他对象进行交互。封装提供了数据的保护和控制通过定义公共接口可以控制对对象内部数据的访问和操作增加了代码的可维护性和可重用性。 继承Inheritance继承是指一个类子类可以继承另一个类父类的属性和方法并可以在此基础上进行功能的扩展或修改。通过继承子类可以继承父类的通用行为和属性避免了重复编写相同的代码。继承也支持多层次的继承形成类的层次结构提供了代码的组织和管理。 多态Polymorphism多态是指同一种行为或操作可以具有多种不同的表现形式。在面向对象编程中多态性通过继承和重写方法实现。多态性使得在对对象进行操作时可以根据上下文的不同选择合适的方法实现了代码的灵活性和扩展性。多态性还可以通过接口接口多态实现使得不同的类可以实现相同的接口从而具有相同的行为。 TCP与UDP的区别算法优劣评价术语 死锁的原因、条件 产生死锁的原因主要是 1 因为系统资源不足。 2 进程运行推进的顺序不合适。 3 资源分配不当等。 如果系统资源充足进程的资源请求都能够得到满足死锁出现的可能性就很低否则就会因争夺有限的资源而陷入死锁。其次进程运行推进顺序与速度不同也可能产生死锁 这四个条件是死锁的必要条件只要系统发生死锁这些条件必然成立而只要上述条件之一不满足就不会发生死锁。 1 互斥条件一个资源每次只能被一个进程使用。 2 请求与保持条件一个进程因请求资源而阻塞时对已获得的资源保持不放。 3 不剥夺条件:进程已获得的资源在末使用完之前不能强行剥夺。 4 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 list和vector的区别 在编程语言中list和vector通常代表不同的数据结构和容器类型其主要区别如下 内部实现在许多编程语言中list通常是一个链表或双向链表它的元素在内存中可以是分散存储的通过指针相互连接而vector通常是一个连续的内存块它的元素在内存中是连续存储的通过索引访问。 大小调整由于内部实现的不同list支持动态调整大小插入和删除元素的时间复杂度是 O(1)而vector的大小通常是固定的当需要调整大小时可能需要重新分配内存和复制元素插入和删除元素的时间复杂度是 O(n)。 访问效率由于连续存储的特性vector的访问效率更高通过索引直接访问元素时间复杂度是 O(1)而list需要从头节点开始逐个遍历时间复杂度是 O(n)。 插入和删除效率在插入和删除元素方面list由于其链表结构在特定位置插入和删除元素的时间复杂度是 O(1)而vector由于需要移动后续元素时间复杂度是 O(n)。 综上所述list适用于频繁插入和删除元素、对随机访问不敏感的场景而vector适用于频繁随机访问、对插入和删除操作要求不高的场景。根据具体的需求和使用场景选择合适的数据结构可以提高程序的效率和性能。 中断不能返回一个值中断不能传递参数 预处理器标识#error的目的是什么 预处理器标识#error的目的是向编译器发送错误信息并停止编译过程。当预处理器遇到#error指令时它会将紧随其后的错误消息作为编译错误的一部分并在编译过程中生成一个错误。 使用#error指令可以在预处理阶段检测到编译时错误或不满足特定条件的情况例如 条件检查当某个条件不满足时可以使用#error指令提供有关问题的提示例如要求编译时使用特定的编译器标志或环境变量。 版本控制当代码需要在特定版本或以上的编译器中编译时可以使用#error指令检查编译器版本并提供相应的错误消息。 模块选择当需要选择特定的代码模块或功能时可以使用#error指令阻止编译以确保代码不会在不兼容的环境中运行。 通过使用#error指令开发者可以在编译时提供有用的错误信息帮助识别潜在的问题并加快问题定位与解决过程。 一个参数既可以是const还可以是volatile吗 可以的例如只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。 一个定义为volatile的变量是说这变量可能会被意想不到地改变这样编译器就不会去假设这个变量的值了。精确地说就是优化器在用到这个变量时必须每次都小心地重新读取这个变量的值而不是使用保存在寄存器里的备份 volatile修饰符告诉complier变量值可以以任何不被程序明确指明的方式改变最常见的例子就是外部端口的值它的变化可以不用程序内的任何赋值语句就有可能改变的这种变量就可以用volatile来修饰complier不会优化掉它。 const修饰的变量在程序里面是不能改变的但是可以被程序外的东西修改就象上面说的外部端口的值如果仅仅使用const有可能complier会优化掉这些变量加上volatile就万无一失了。 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C中应用什么实现? 答案c用宏定义c用inline
http://www.zqtcl.cn/news/816337/

相关文章:

  • 企业网站seo优做网站的旅行社
  • 十大免费自助建站上传网站到空间
  • 深圳企业做网站简约个人网站
  • 茂名放心营销网站开发网站怎么做app
  • php语言 网站建设专业的外贸网站建设公司价格
  • 看英语做游戏的网站wordpress与微信对接
  • 企业网站打不开了看守所加强自身网站建设工作
  • 长汀网站建设做电池的有哪些网站
  • 做软件常用的网站厦门建设局地址
  • 沭阳三剑客做网站科技 公司 响应式 网站
  • 深圳网站建设培训哪家好曲阜网架公司
  • wordpress建立网站实例贵阳网站开发谁家做的好
  • 百度网站推广怎么收费中国科技成果
  • 枣庄企业网站建设wordpress 评论群发
  • 网站视觉设计方案视频制作素材
  • 哪个网站专做民宿wordpress 主题教程
  • 网站后台 设计北京海淀区官网
  • 公司官网网站建设想法wordpress oss
  • 如何自己创建网站招聘网站代理
  • 手机网页视频提取工具seo网站是什么
  • seo网站优化公司龙岩网站设计一般要多久
  • 江苏自助建站系统哪家好go语言网站开发
  • 建设网站 注册与登陆wordpress产品上传
  • 河北省住房与建设厅网站陶瓷刀具网站策划书
  • 大型商城网站建设方案程序外包
  • 邵阳网站建设制作电子商务网站开发软件
  • 怎样推广网站平台树莓派 wordpress mysql
  • 互联网公司网站建设wordpress发文章设置文字大小
  • 国科联创网站建设无锡网站建设有限公司
  • 网站开发官网源码石家庄怎样做网站