C/C++
Surferqing_
物有本末、事有终始,知所先后,则近道矣。
展开
-
sprintf、atoi、strlen、strcat、memset、sizeof的一些用法总结
转载---点击打开链接一、sprintf的用法// 需要#include <stdio.h>// 将字符串打印到arr数组 sprintf(arr, "%s", "abc"); // 将整数转换为字符串存入arr数组sprintf(arr, "%d", 123);//将整数123转换成字符串"123" sprintf(arr, "%02d", 1); //将整数1转换成字符串转载 2018-07-11 14:57:16 · 158 阅读 · 0 评论 -
嵌入式实时系统中局部变量和全局变量
一、首先简要介绍局部变量和全局变量区别(1)作用域全局变量具有全局作用域,适用于所有源文件。但在不包含全局变量定义的文件中,需使用extern关键字声明这个全局变量后,方可正常使用。静态全局变量也具有全局作用域。它与全局变量的区别是,它仅仅作用于定义它的文件,程序中其他文件不可用。局部变量只有局部作用域。只在函数执行期间存在,当函数调用结束后,变量将被撤销,其所占用内存被收回。...转载 2019-05-23 18:34:20 · 2626 阅读 · 0 评论 -
#if、#else、#endif、#elif、#ifdef、#ifndef的区别和使用
常用的条件编译#if, #elif,#else,#endif,#ifdef、#ifndef看名字就知道,跟我们平时用的if、elseif、else是 一样的,不同的是这里一定要记得 #endif。#if 条件 1 代码 1#elif 条件 2 代码 2#else 代码段 n+1#endif意思跟我们平常写的代码一样,如果条件1成立,则编译代码1,如果条件二成立,则编...转载 2019-05-23 18:26:50 · 27549 阅读 · 0 评论 -
Linux 或 Unix 操作系统目录表示
在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个...原创 2019-02-21 17:57:37 · 3174 阅读 · 0 评论 -
int a=301;char *p=(char *)&a; printf("%d,%d",*p,*++p);
题目:#include<stdio.h>int main(){int a=301; // 1_0010_1101Bint x=1; x>>8?printf("big\n"):printf("small\n"); //检测大小端char *p=(char *)&a;printf("%d,%d",*p,*++p); retur...原创 2018-12-30 20:51:17 · 3992 阅读 · 0 评论 -
回调函数的 学习
可以参考这个网站来学习:https://segmentfault.com/a/1190000008293902回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。回调函数的核心就...原创 2018-11-28 15:33:15 · 197 阅读 · 0 评论 -
c语言中,while(1)语句使用break语句跳出循环
这个要分情况的:1:本身条件就有出口,这样的话,可以自然退出,也可以认为退出2:如果本身条件永远不可能满足,例如:while(1)像这种的话想要退出的话就必须人为干涉,例如int num = 0;while(1){ num++; if(num >1000)break;}注意:一般这类的循环都是用break退出的。 while(1)中执行到属于while自身的break语句。break...转载 2018-11-22 09:47:38 · 64871 阅读 · 0 评论 -
一维数组a[5]中&a和a区别
#include "stdio.h"int main(){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); return 0;}答案:2,5区别:a代表数组a[5]的首地址,&a代表数组整体的地址,虽然他们的地址数是一...原创 2018-11-05 21:25:29 · 3818 阅读 · 3 评论 -
脚本语言怎么理解
脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译脚本语言是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。 它的命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批量处理语言或工作控制语言。...原创 2018-11-02 19:06:36 · 1716 阅读 · 0 评论 -
c51中bdata是什么意思及使用方法
c51中"bdata"是片内RAM,位寻址方式;存储器类型说明的意思。c51中"bdata"的用法:C51中的两种位变量,除了特殊功能寄存器中的可位寻址的位外,还有位于单片机内部RAM字节。地址0x20~0x2F的16个字节的128个可寻址位,位地址从0x00~0x7F。例程:unsingned char bdata sta; //...原创 2018-10-26 15:27:23 · 5275 阅读 · 0 评论 -
C语言 运算符的优先级和结合性是怎样的?
1.问题阐述各种运算符的优先级是怎样的?结合顺序又是怎样的?2.专家解答C语言中的运算符种类丰富,有40多种,分为15种优先级,而且还具有结合性的特点。在表达式中,各运算对象参与运算的先后顺序不仅要遵守运算符优先级的规定,还有运算符结合性的制约,以便确定运算对象的执行顺序。这种结合性是其他语言没有的。各种运算符的优先级从高到低的顺序如图5.1所示。以上运算符的优先级由上到下递减。初级运...原创 2018-08-11 19:02:24 · 10408 阅读 · 0 评论 -
STM32中防止头文件重复包含
在 STM32 标准库的所有头文件以及我们自己编写的“bsp_led.h”头文件中,可看到类似代码清单 12-9 的宏定义。它的功能是防止头文件被重复包含,避免引起编译错误。代码清单 12-9 防止头文件重复包含的宏1 #ifndef __LED_H2 #define __LED_H3 4 /*此处省略头文件的具体内容*/5 6 #endif /* end of __LED_H...原创 2018-08-10 16:45:41 · 2621 阅读 · 1 评论 -
C 语言中的续行符语法
// 代码实例: #define LED_RGBOFF \ LED1_ON;\ LED2_ON\ LED3_OFF代码中的“\”是 C 语言中的续行符语法,表示续行符的下一行与续行符所在的代码是同一行。代码中因为宏定义关键字“#define”只...原创 2018-08-10 16:27:10 · 10511 阅读 · 3 评论 -
volatile 在STC32中的含义解释,应用
1 //寄存器的值常常是芯片外设自动更改的,即使 CPU 没有执行程序,也有可能发生变化2 //编译器有可能会对没有执行程序的变量进行优化3 4 //volatile 表示易变的变量,防止编译器优化,5 #define __IO volatile6 typedef unsigned int uint32_t;7 typedef unsigned short uint16_t;8 9...原创 2018-08-09 20:44:10 · 358 阅读 · 0 评论 -
嵌入式C语言编程小知识
1. 流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件执行”功能。2. 在LPC2200系列中:可以通过过下面的程序延迟10毫秒:for(i=0;i<200;i++){for(j=0;j&l...转载 2019-05-23 18:39:43 · 420 阅读 · 0 评论