![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++ 整理
文章平均质量分 52
斜杠青年/
人类的幸福与欢乐在于奋斗,而最有价值的是为理想而奋斗.
展开
-
C语言变量的存储类型
代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的。 数据区:存放已初始化的全局变量、静态变量(全局和局部)、常量数据。 BBS区:存放的是未初始化的全局变量和静态变量。 栈区:由编译器自动分配释放,存放函数的参数值、返回值和局部变量,在程序运行过程中实时分配和释放,栈区由操作系统自动管理,无须程序员手动管理。 堆区:堆是由malloc()函数分配的内存块,使用free()函数...原创 2018-03-07 22:16:05 · 4040 阅读 · 0 评论 -
C语言基本概念笔记《六》之位运算及混合编程
一·位运算1.主要有以下六种: ①& 按位与 ②| 按位或 ③^ 按位异或 ④~ 按位取反 ⑤<< 按位左移 ⑥>> 按位右移二·C语言与会变语言混合编程1. 只要在汇编指令前面加上asm就可以了: ①asm AND a1,ofeh ②asm { AND a1,ofeh MOV a2,80h }原创 2018-03-25 17:09:15 · 184 阅读 · 0 评论 -
详解链表的创建,插入,删除,遍历
开始前废话几句,前几天做C语言笔记时,写到链表这块,懒得写链表的基本操作了,只浏览了一下概念,拖了好几天,今天打算把它完成,期间遇到了一个困惑,在这里再一次对马博老师表示感谢!//为了方便理解,链表的节点的结构体写简单点:typedef struct DATE{ int num; struct DATE *next;}date;//用date代替typedef str...原创 2018-03-31 20:54:09 · 413 阅读 · 0 评论 -
C语言基本概念笔记《二》之 语句
一·数据的输入输出:1.①格式化输入: scanf(“%d %d”,&a,&b); 输入:2 3 (注意,空格多个或一个都视为一个) scanf(“%d ,%d”,&a,&b); 输入:2 3 或2,3都可以 scanf(“%...原创 2018-03-21 21:06:01 · 192 阅读 · 0 评论 -
C语言基本概念笔记《七》之文件及操作文件的常用函数
一·文件概述1.文件的操作流程1.1建立/打开文件 1.2读文件/写文件 1.3关闭文件2.文件和内存的交互处理**2.1文件在外存中:(system I/O)//非缓冲文件系统,不提供缓冲区 2.2文件在内存中:(standard I/O)//缓冲文件系统,提供缓冲区二·文件类型指针1.文件类型的指针的结构体(VC6里面的):#ifndef _...原创 2018-03-26 23:19:03 · 273 阅读 · 0 评论 -
解决:invalid application of `sizeof' to incomplete type `char[] '错误
最近做一个DIY玩具,遇到的这个问题: 解决:invalid application of sizeof' to incomplete typechar[] ‘错误//a.c文件#include "a.h" char array[]={0XED,0X34,0X40,0X34};//a.h文件#ifndef _A_H#define _A_H#define size (...原创 2018-03-28 18:34:22 · 27083 阅读 · 3 评论 -
C++实现词法分析器(学习)
参考网上程序,我把生成的数据存在文件里,能分析C语言的源程序#include<fstream> #include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; string KEYWORD[17]={"if","else","原创 2018-04-17 11:16:38 · 3288 阅读 · 0 评论 -
map的基本用法
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1. map最基本的构造函数; map<string , int >mapstring; map<int ,string >mapint; map<sring, char>mapstrin...转载 2018-05-08 22:25:18 · 1167 阅读 · 1 评论 -
错误:重复定义变量的解决办法——不要在头文件里定义变量
在写C代码的时候,经常需要在头文件中包含有些预定义的信息。比如一些结构体的声明,外部变量,函数的声明等。有时候觉得有必要在头文件中定义一些变量,这样在源文件中就不需要定义了。但是这样做,有很大的问题。比如[cpp] view plain copy //test.h 1 #ifndef _TEST_H 2 #define _TEST_H 3 int x; 4 c...转载 2018-05-28 16:21:57 · 3057 阅读 · 1 评论 -
C语言将32位数字转换为四个8位的数字,或者字节
转化为16位或其他的类似:#include<stdio.h> int main(){ unsigned long long x=0x11223344; int i,a[4];// char a[4];//转换为字节 for(i=0;i<4;i++) { a[i]=(x>>(i*8))& 0xFF; printf("%x\n"...原创 2018-06-15 20:46:28 · 67611 阅读 · 0 评论 -
C语言中const用法解析
const修饰的变量存储位置,和不用const修饰的没区别!!!!!!转自:http://blog.csdn.net/xingjiarong/article/details/47282255关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它...转载 2018-08-12 16:45:16 · 13690 阅读 · 0 评论 -
extern声明全局变量的用法
这篇文章主要讲解一下extern声明全局变量的一些用法,虽然知识点比较浅显,但是却容易犯错,仅与那些初学C++的朋友分享,希望没有让大牛们见笑。extern最基本的用法是声明全局变量的。这里需要注意两点,一是“声明”,二是“全局变量”;我们先来分析这两个概念。声明:声明和定义是有区别的。声明不等于定义,声明只是指出了变量的名字,并没有为其分配存储空间;定义指出变量名字同时为变量分配存储空间,定...转载 2018-08-08 21:53:54 · 32330 阅读 · 7 评论 -
全局变量与静态全局变量的区别
一·全局变量作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。 二·静态全局变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。这是extern声明全局变量的用法...原创 2018-08-08 22:05:32 · 2754 阅读 · 0 评论 -
C语言基本概念笔记《五》之指针与链表
一·链表的特点1.对存储空间用则申请,不用则释放 2.插入删除只需少量操作 3.大大提高空间,时间的利用率二·链表的结构1.申请空间: 用malloc函数,它包含在stdlib.h文件里。 2.分析结构: 链表简单点说就是把一个一个的节点串起来,申请一个节点空间就串一个节点空间。但是他们的物理地址可能连续可能不连续,但是他们都存储在堆区。 3.节点的数据结构: 上面提到的节点的结构体类原创 2018-03-25 15:34:49 · 223 阅读 · 0 评论 -
C语言基本概念笔记《三》之指针,数组,动态数组的创建
一·指针1. 地址运算符& :只能取内存中变量的地址。 取值运算符*:一般和指针合用。作用是获取指针所指向的变量的值。 指针也是一个变量:指针变量(对应的,整型变量等),它里面存的是变量的地址 int a; int *p;//定义 p= & a;//把a的地址存到p里。即p指向变量a. 由 *p=5;可使a=5;2.&* 与*&的区别: ...原创 2018-03-23 08:32:44 · 889 阅读 · 0 评论 -
宏定义,定义一个宏比较两个数的大小
#include<stdio.h> #include<math.h> #define charck(a,b) (((a)-(b))==fabs((a)-(b)))?printf("a>b"):printf("a<b")int main(void){ int a,b; scanf("%d %d",&a,&b原创 2018-03-14 22:35:48 · 11294 阅读 · 1 评论 -
关于C预处理的笔记
一·指令功能#define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,编译下面的代码 #ifdef 如果宏已定义,则编译下面代码 #endif 结束一个 #if““#else 条件编译块 #ifndef 如果宏未定义,则编译下面代码 #error 停止编译并显示错误信息 #elif 前面的 #if 的条件为假,则执行下面的代码...原创 2018-03-14 22:38:25 · 183 阅读 · 0 评论 -
const总结
1.const类型也称为常类型,,定义const常量,具有不可变性。 const int i=100; 可以和宏定义一样,不变则以,一变都变。但是和#define不一样的是从汇编角度来看,const只给出对应内存的地址,而#define给出的是立即数。所以const定义的常量在程序运行过程中只有一份复制品,而宏定义的常量有若干个。 举例:#define q=6const int...原创 2018-03-08 18:16:55 · 197 阅读 · 0 评论 -
宏求结构体的偏移地址
[cpp] view plain copydefine OffSet(type,field) ((size_t)&(((type*)0)->field))在C语言中,ANSI C标准允许值为0的常量被强制转换成任何一种类型的指针,而且转换结果是一个空指针,即NULL指针,因此对0取指针的操作((type*)0)的结果就是一个类型为type*的NULL指针。 但是如果利用这...转载 2018-03-15 20:25:00 · 269 阅读 · 0 评论 -
*p++与(*p)++的区别
前缀递增递减和*优先级相同,从右到左;后缀递增递减比前缀优先级高,从左到右。 先看下面这段测试程序;#include<stdio.h>int main(void){ int arr[5]={1,5,10,15,20}; int *p=arr; int a,b,c; a=*p++; printf("%d %d\n",a,*p);...原创 2018-03-10 22:40:44 · 18857 阅读 · 1 评论 -
a++为什么不能作为左值
表达式i++的值是一个临时变量,所以不能给临时变量赋值(因为它们马上就消失了)表达式++i的值是i,不是临时变量下面引用在博客上看到的一个易于理解的回答: 首先说左值和右值的定义: 变量和文字常量都有存储区,并且有相关的类型。区别在于变量是可寻址的(addressable)对于每一个变量都有两个值与其相联: 1).它的数据值,存储在某个内存地址中。有时这个值也被称为对象的右值(r...原创 2018-03-11 12:12:16 · 1768 阅读 · 0 评论 -
字符串逆序输出,((,{,[这几个不变)
小号一个字符串,逆序输出,其中(),[],{},不变:#include<stdio.h>#include<stdlib.h>#include<string.h>char* array(char * src){ char a; int n=strlen(src); int m=n-1; for(int i=n...原创 2018-03-18 17:11:08 · 293 阅读 · 0 评论 -
变量与’零值‘的比较
一·一般与零值比较的变量有布尔型(BOOL),指针型(*),int型,float型。下面我们分别来看一下:1.布尔型(BOOL) :一般用来判断一个变量是真还是假,例如:if(var),if(!var)2.指针型(* ) :一般用来判断是否为空,例如 :if(var==NULL),if(var!=NULL)3.int型 : 一般用来判断变...原创 2018-03-12 17:14:04 · 326 阅读 · 0 评论 -
sizeof与strlen的区别
这俩个我经常会混淆,今天在此总结一下,以后忘记了可以直接复习: 1.首先他两个类型不同,sizeof是关键字,而strlen是函数。 2.sizeof的参数可以是类型,或者函数,而strlen只能用char * 做参数 例如:int g(); sizeof(g()); //sizeof(g())的值等于 sizeof(int) 注意:sizeof后面如果是类型必须加括号,是变量的话可以...原创 2018-03-12 17:42:48 · 204 阅读 · 0 评论 -
struct(结构体)的长度以及字节对齐方式
struct是一种复合数据类型,一般而言struct的sizeof是所有成员对齐后长度相加的长度,下面分析一下:1.//我的电脑是64位#include<stdio.h>struct sum{ short d;};int main(void){ sum s; int summ; summ=sizeof s; prin...原创 2018-03-12 18:08:50 · 3763 阅读 · 0 评论 -
C语言基本概念笔记《一》之标识符与变量的输入输出
有些不常用的概念都模糊了,等到面试时候,面试官提问,自己连最基础的概念都不清楚,所以我觉得对基本概念清楚是扎实基础的第一步。 下面是一些概念(字符集,运算符啥的我就不写了):一·字符,变量,标识符等1. 标识符:由关键字(32个关键字,int if ),预定义标识符 (库函数,预编译命令),用户标识符(自己定义的变量,函数名) 注意:标识符必须由英文字母或者...原创 2018-03-21 20:20:36 · 649 阅读 · 0 评论 -
C语言基本概念笔记《四》之指针与函数,结构体,共用体,枚举
一·函数1.函数的返回值类型和return中表达式类型不一致时,以函数的类型为准。 2.函数的参数: ①形参在编译时不分配存储空间,无初值,只有在函数调用时为其临时分配空间,接受实参值,函数调用结束,内存就被释放, ②数组元素作为参数和普通变量一样 ③数组名作为参数,传递的实际上是数组首地址。被调函数可以使用数组的元素值,而且可以改变实参数组元素的值 int fff(int a[...原创 2018-03-25 09:20:11 · 712 阅读 · 1 评论 -
JLINK 与STM32的SWD连接接线方式
有些开发板只能用Jlink烧写程序,但是没有提供标准Jlink接口,我们可以使用下面的办法,烧写:原创 2018-08-19 10:08:58 · 39861 阅读 · 0 评论