- 博客(14)
- 收藏
- 关注
原创 引用和const
一、引用传入 声明方法:类型标识符 & 引用变量名 = 被引用的变量名 表层来看引用只是一个别名,底层来看C++中的引用和指针的处理方式相同(在所有用到引用变量的地方系统会自动解引用) 特点: ①必须被初始化 ②引用初始化的变量一定要可以取地址 ...
2018-11-26 20:48:01
460
原创 C和C++的相互调用
C++中引用了:extern “ C ” { }C++调用C语言:用 extern " C " { ... }C语言调用C++:修改C++文件,在cpp文件中添加extern " C " 不修改C++文件,加中间层处理extern void Show();extern "C"{ void MyShow()//中间文件只做一件事,调用那个.c文件中的函数 { ...
2018-11-26 19:10:40
202
原创 函数默认值、函数重载、inline函数
一、函数默认值 1、函数默认值一般写在声明中 2、默认值赋值自右向左,依次赋值 3、默认值赋值只能赋一次 4、默认值的限制:不能使用局部变量 可以使用全局变量 可以使用函数int Compare(int a, int b, int c = 10)//可以给所有形参设置默认值,也可以给部分形参设置默认值{ if (a...
2018-11-24 19:28:42
251
原创 函数堆栈调用
首先,我们来了解一些简单的的汇编知识:1:简单的汇编指令 mov 移值 mov dword ptr[ ebp - 4 ],14h lea 移地址 lea eax , [ ebp - 4 ] push 压栈 push 10 pop ...
2018-11-24 18:09:46
152
原创 编译完成后的目标文件与虚拟地址空间
一、目标文件的格式 在Windows下可执行文件的格式通常为 .exe ,在Linux下则为ELF格式,而目标文件就是源代码经过了编译阶段但没有进行链接的中间文件,它的文件结构和内容与可执行文件很相似,因此一一般和可执行文件一起采用同一种格式存储。动态链接库和静态链接库都可以按照可执行文件的格式存储二、目标文件中数据存储格式 汇编阶段完成后,指令被翻译成二进制形...
2018-11-06 15:43:56
2065
原创 编译与链接
一、编译 1、预编译: 由c语言举例,一段代码,在经过预编译阶段后,由 .c 文件生成 .i 文件。预编译阶段主要处理源代码中以“#”开始 的预编译指令,例如:“ #include ” “ #define ”等。具体过程如下:将所有的“ #define ”删除,并且展开所有的宏定义,进行宏替换。 处理所有的条件预编译指令,...
2018-11-06 14:29:30
119
原创 动态申请内存
动态分配的内存是有头和尾信息的。动态存储分配函数:1、malloc 函数原型:void *malloc ( unsigned size ) 功能:分配size字节的存储区 返回值:所分配的内存区起始地址,如内存不够,返回空指针。2、realloc 函数原型:void *realloc ( void *p,unsigned size ) 功能:将p所指出的已分配内存...
2018-05-01 18:21:27
523
原创 一维数组和二维数组中的数据类型
一维数组和二维数组的数据类型一、一维数组 int arr[4]; 在上述语句中,arr,arr+1,arr[0]的数据类型都是什么呢? 二、二维数组 由一维数组中研究的对象我们可以推导在二维数组中研究的对象 ...
2018-04-16 23:00:23
1869
原创 const关键字
const关键字const的用法:1、定义常变量。将变量变成只读(定义时必须有值)。(1)在这里我们解释一下常变量和常量的区别。常变量具有变量的基本属性:有类型,占存储单元,只是不允许改变其值。可以说常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。const在使用时要注意: const修饰一个变量,一定要给这个变量初始化值,若不初始化,就是一个局部变量,局部变...
2018-04-16 20:38:58
138
原创 如何判断进制
举例:假设在n进制下,下面等式成立,567*456=150216,n的值是() A.9 B.10 C.12 D.18在算进制的转换时,我们用到了权值法,那么在面对这种类型的题时我们也可以用权值法。1、我们将上面的等式按照权值展开: 接下来我们整理等式两边:2、通常在做这种题时或者说是判断进制的问题时...
2018-04-12 20:59:45
4749
原创 关于指针的运算
一、指针+数字 在我们编写程序时,指针常常被我们用在数组中批量处理数据,而在批量处理数据时我们会用到循环来做,也就需要做指针++的运算,那么问题来了:在做指针加法时是如何加的?由上图,关于指针加数字这个问题我们可以得到以下几种猜测:1、加一个字节 放第一个数据进去(用十六进制表示,PC是小端,低地址放小数据)放第二个数据进去如图所示,表示的数字完全不对了2、加一个数组长度 显然,...
2018-04-11 19:25:30
4917
原创 父函数与子函数
在父函数中调用子函数时,要如何使得父函数中的值也改变呢?我们以常见的数字交换问题来举例:如图所示:在子函数中打印结果正确,如图所示,在父函数中打印结果不正确。那么究竟是为什么不正确呢?原因在于,父函数中a,b的值是10,20传到子函数中去相当于给子函数的a,b赋值,子函数中a,b的值做了交换并没有影响到父函数中a,b的值。他们所属不同的函数中,地址不同,也就不是同一个a和b。这是我们常用的交换变量...
2018-04-02 18:09:55
4771
原创 数组与指针
一、数组 1.概念:数组是一组有序数据的集合。数组中数据的排列是有一定规律的,下标代表数据在数组中的序号。 2.数组的定义: 数据类型+数组名[常量表达式] 3.数组的赋值: ① int arr[10]={0,1,2,3,4,5,6,7,8,9}; ② int arr[10]; arr[1...
2018-03-31 21:39:59
179
原创 给一个整数,要求:1、输出它是几位数。2、输出每一位数字。3、按逆序输出每一位数字
题目:给一个整数,要求:1、输出它是几位数。2、输出每一位数字。3、按逆序输出每一位数字要点:1、输出位数时注意do while和while的区别,在使用while时注意考虑0是否被包含进去 2、正序输出每一位数字的方法是:输出(当前数字)/(10的当前数字位数-1次方),再将(当前数字)%(10的当前数字位数-1次方)赋值给当前数字,继续循环直到当前数字==0为止 ...
2018-03-28 21:22:43
3457
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人