
c/c++
文章平均质量分 82
wellxin
探索者丸丸号------朝着嵌入式Linux方向前进,嵌入式底层驱动
展开
-
在stm32开发过程中常遇到的C语言知识小概括
(1)指针(2)预编译#ifndef.........#endif(3)extern,typedef(4)将其他数据类型转为字符串sprintf原创 2016-02-05 16:50:43 · 1252 阅读 · 0 评论 -
有符号数与无符号数之间运算问题
首先我们要先了解一下下面几个概念:(注意一点计算机的操作执行只认1与0,至于像如10001100这样的值是什么值,补码原码,还是其他,由程序员自己解释。) (1)模:“模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。例如:时钟的计量范围是0~11,模=12。表示n位的计算机计量范围是0~2^(n)-1,模=2^(n原创 2016-02-03 23:03:26 · 13838 阅读 · 1 评论 -
C语言的布尔类型bool
C语言的布尔类型 在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法://定义一个int类型变量,当变量值为0时表示false,值为1时表示trueint flag;flag = 0;//......flag = 1;if( flag ){//......} 但这种做法不直观,转载 2016-10-10 04:54:36 · 956 阅读 · 0 评论 -
枚举类型---enum
枚举类型 在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为转载 2016-09-07 06:27:53 · 405 阅读 · 0 评论 -
预处理
(1)从会敲代码开始,我们就知道编译器的重要性,没有这东西,我们的代码就是一堆字符而已。而编译器编译程序的步骤主要有四个——预处理、编译、汇编和链接,最后得到可执行的目标文件。 四个步骤各自的工作会是怎么样的呢?不知为何,对这个东西有了点兴趣。以GCC为例,主要工作是这样的:预处理阶段会调用cpp,编译阶段会调用cc得到汇编程序,汇编阶段调用as得到目标代码原创 2016-09-16 20:23:35 · 413 阅读 · 0 评论 -
函数宏
要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。 我们来看一个例子,比较两个数或者表达式大小,首先我们把它写成宏定义: #define MAX(转载 2016-09-03 13:51:54 · 298 阅读 · 0 评论 -
C/C++基本数据类型
学了C然后C++,然后MFC/Windows,然后是C#,其中数据类型很多,由基本类型衍生的typedef类型也N多。熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C++/Windows /C#基本数据类型,以便日后查阅。说明:(1)类型修饰符signed和unsigned用于修饰字符型和整形。(2)类型修饰符short和long用于修饰字符型和整转载 2016-09-16 20:11:24 · 293 阅读 · 0 评论 -
动态链接库、静态库、import库区别
动态链接库、静态库、import库区别动态链接库(Dynamic Linked Library):Windows为应用程序提供了丰富的函数调用,这些函数调用都包含在动态链接库中。其中有3个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,转载 2016-09-03 11:14:40 · 703 阅读 · 0 评论 -
Linux内存管理(.text .data .bss)
Linux内存管理orisun@orisun-desktop:~/Program$size memory2text data bss dec hexfilename2074 284 16 2374 946memory2可以看到一个可执行程序在存储(没有调入内存)时分为代码区,数据区,未初始化数据区三部分。 (1)代码区存放CPU执行的机器指令。通常代码区是共享的,即其它转载 2016-09-03 10:52:40 · 2642 阅读 · 0 评论 -
sizeof
(1) C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来!(2) sizeof有三种语法形式,如下:123sizeof(object);//sizeof(对象);sizeof(type_name);//sizeof(类型);sizeof原创 2016-09-03 00:34:14 · 346 阅读 · 0 评论 -
各种程序内存与其上数据关系
(1)静态内存:用来保存局部static对象,类static数据成员以及任何函数之外的变量(如全局变量)。(2)栈内存:用来保存定义在函数内的非static对象(如局部变量)。(3)堆内存:每个程序拥有一个内存池(堆),程序用堆来存储动态分配(如C中的malloc,C++中的智能指针或new)的对象,即那些在程序运行时分配内存的对象,需要显示地销毁它们(如free)。对于(1)(2)类原创 2016-08-31 21:32:32 · 402 阅读 · 0 评论 -
程序占用的内存分类
字符串常量,放在哪个存储区呢?是“自动存储区”还是“静态存储区”中?比如:char *pstr="hello world!";这里,"hello world!"是一个字符串常量,pstr是在栈中的变量。我想问,字符串常量,在哪个内存区域分配空间呢?好像应该不是在“栈区“分配空间吧!!!一、预备知识—程序的内存分配一个由C/C++编译的程序转载 2016-09-12 21:23:46 · 405 阅读 · 0 评论 -
extern
在一个源文件里定义了一个数组:char a[6];在另外一个文件里用下列语句进行了声明:extern char *a;请问,这样可以吗?答案与分析:1)、不可以,程序运行时会告诉你非法访问。原因在于,指向类型T的指针并不等价于类型T的数组。extern char *a声明的是一个指针变量而不是字符数组,因此与实际的定义不同,从而造成运行时非法访问。应该将声明改为转载 2016-05-10 03:40:11 · 565 阅读 · 0 评论 -
只用两变量实现两者数据的交换
不需要第三个位置来临时储存数据,而实现两者的数据交换原创 2016-02-05 23:07:05 · 870 阅读 · 0 评论 -
C语言之static
目录:(1)静态全局变量(2)static局部变量(3)static函数正文:(1)静态全局变量 静态全局变量和其他的全局变量的存储地点并没有区别,都是在.data段(已初始化)或者.bss段(未初始化)内,但是它只在定义它的源文件内有效,其他源文件无法访问它。所以,普通全局变量穿上static外衣后,它就变成了新娘,已心有所属,只能被定义它的源文件(新郎原创 2016-09-04 07:37:18 · 303 阅读 · 0 评论