随笔分类 - C/C++
摘要:用C语言进行嵌入式系统的开发具有汇编语言编程不可比拟的优势,虽然C语言编写出的代码要比汇编语言占有的空间大5%~20%,但是由于半导体技术的发展,芯片的容量和速度有了大幅度的提升,占用空间的比例已经不是那么关键,相比之下,更看重软件是否具有长期稳定运行的能力,注重使用先进开发工具所带来的时间和成本的
阅读全文
摘要:最近在使用Nordic的最新蓝牙芯片nRF52832开发过程中,因为做一些测试涉及到对内存地址的操作,有(*(volatile unsigned int *)0xE000EDFC)的用法然后进行宏定义,本文将解析一下这种用法。 代码解析 先来看下面一段代码: #define ARM_CM_DEMCR
阅读全文
摘要:ID:技术让梦想更伟大 作者:李肖遥 链接:https://mp.weixin.qq.com/s/ZFf3imVaJgeesuhl1Kn9sQ 在C语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统,我们常用的算术类型包括两种类型:整数类型和浮点类型。那么相互之间具体是怎么转化的呢?
阅读全文
摘要:ID:技术让梦想更伟大 作者:李肖遥 wechat链接:https://mp.weixin.qq.com/s/b1jQDH22hk9lhdC9nDqI6w 相信大家写业务逻辑的时候,都是面向if、else、for、while、switch编程。但是你见过switch嵌套do..while吗? 先上代
阅读全文
摘要:ID:技术让梦想更伟大 作者:李肖遥 解释区分一下C语言和OOP 我们经常说C语言是面向过程的,而C++是面向对象的,然而何为面向对象,什么又是面向过程呢?不管怎么样,我们最原始的目标只有一个就是实现我们所需要的功能,从这一点说它们是殊途同归的。过程与对象只是侧重点不同而已。 举个例子吧,我现在有个
阅读全文
摘要:版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://www.cnblogs.com/lihuidashen/p/12937085.html 微信链接:https://mp.weixin.qq.com/s/MFOaa-Dw
阅读全文
摘要:版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://www.cnblogs.com/lihuidashen/p/11543960.html https://mp.weixin.qq.com/s/MnZFWk_yYN67j
阅读全文
摘要:版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://www.cnblogs.com/lihuidashen/p/11510532.html https://mp.weixin.qq.com/s/xDAfaEFY4INHz
阅读全文
摘要:1、对象指针的一般概念 对象指针:指向类的成员的指针。在C++中,可以说明指向类的数据成员和成员函数的指针。 对象指针遵循一般变量指针的各种规则:类名 *对象指针名; 对象指针名à成员名; 对象指针在使用之前,也一定要先进行初始化,让它指向一个已经声明过的对象,然后再使用。通过对象指针,可以访问到所
阅读全文
摘要:最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~ const指针的定义: const指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下: type *const 指针名称; 声明指针时,可以在类型前
阅读全文
摘要:malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。下面具体介绍一下malloc函数,,希望帮助大家了解。一、原型:extern void *malloc(unsigned int num_b...
阅读全文
摘要:1.首先要准确的弄清楚指针的含义,指针就是地址。 这个比较容易,前面也有提到,就不多解释了。2.什么叫“指向”? 地址就意味着指向,因为通过地址能找到具体该地址的对象。但是应该注意,并不是任何类型数据的地址都可以存放在同一个指针变量中的,只有与指针变量的基类型相同的数据的地址才能存在相应的指针变量中。例如:int a,*p; //p是int*型的指针变量,基类型是int型float b;p=&a; //a是int型,合法p=&b; //b是float型,类型不匹配3.要深入掌握在对数组的操作中正确使用指针一位数组名代表数组首元素的地址,如:int *p...
阅读全文
摘要:指针和函数的关系 可以把一个指针声明成为一个指向函数的指针。intfun1(char*,int);int(*pfun1)(char*,int);pfun1=fun1;........inta=(*pfun1)("abcdefg",7);//通过函数指针调用函数。可以把指针作为函数的形参。在函数调用语句中,可以用指针表达式来作为实参。 例十三:intfun(char*);inta;charstr[]="abcdefghijklmn";a=fun(str);......intfun(char*s){intnum=0;for(inti=0;i{num+=*s;
阅读全文
摘要:C语言的数组表示一段连续的内存空间,用来存储多个特定类型的对象。与之相反,指针用来存储单个内存地址。数组和指针不是同一种结构因此不可以互相转换。而数组变量指向了数组的第一个元素的内存地址。一个数组变量是一个常量。即使指针变量指向同样的地址或者一个不同的数组,也不能把指针赋值给数组变量。也不可以将一个数组变量赋值给另一个数组。然而,可以把一个数组变量赋值给指针,这一点似乎让人感到费解。把数组变量赋值给指针时,实际上是把指向数组第一个元素的地址赋给指针。12345678int myarray[4] = {1,2,3,0};int *ptr = myarray;printf("*ptr=%
阅读全文
摘要:就像数组一样,指向结构体的指针存储了结构体第一个元素的内存地址。与数组指针一样,结构体的指针必须声明和结构体类型保持一致,或者声明为void类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 struct person { int age; char *name; }; struct
阅读全文
摘要:一个指针可以被声明为void类型,比如void *x。一个指针可以被赋值为NULL。一个指针变量声明之后但没有被赋值,叫做未初始化指针。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 int *uninit; // int指针
阅读全文
摘要:指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。 根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个
阅读全文
摘要:从变量的作用域(即从空间)角度来分,可以分为全局变量和局部变量。 另一个角度,从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式。 静态存储方式:是指在程序运行期间分配固定的存储空间的方式。 动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。 用户存储空间可以分为三个部分: 1) 程序区; 2) 静态存储区; 3) 动态存储区; 全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放;动态存储区存放以下数据:1) 函数形式参数;2) 自动变量(未加 sta
阅读全文
摘要:一、c程序存储空间布局 C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内
阅读全文
摘要:1、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,需要使用"::"局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个已经定义过的全局变量?答:extern可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的
阅读全文