![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 88
CRongQ
不忘初心,脚踏实地!
展开
-
一:C/C++可执行文件产生过程
一:C/C++可执行文件产生过程生成一个C++程序共有三个步骤:①预处理:代码在预处理器中运行,预处理器会识别代码中的元信息。②编译:代码被编译或转换为计算机可以识别的目标文件。③链接:独立的目标文件链接在一起变成一个应用程序。代码的编译过程链:源代码->预处理->编译(翻译过程)->汇编->目标文件->链接->可执行程序--《摘自C指针》,其中”翻译过程“在原文中并没有提到,是我加上去的预处理首先程序会被送交给预处理器。预处理原创 2021-03-06 17:13:33 · 2060 阅读 · 6 评论 -
C++用new和不用new创建类对象区别
起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题。当然这都是跟new的用法有关的。new创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高转载 2017-03-08 20:41:10 · 5565 阅读 · 0 评论 -
c++NULL指针
在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码:int *i = NULL;foo_t *f = NULL;实际上在C语言中,NULL通常被定义为如下:#define NULL ((void *)0) 也就是说NULL实际上是一个void *的指针,然后吧void *指针赋值给int *和foo_t *的指针的时候,隐式转换成相应的类型。而如果换原创 2017-10-27 23:31:04 · 3345 阅读 · 0 评论 -
指针的概念
指针的概念使用指针的问题声明等价指针一定要赋初值例如1//char *mychar = 123;//编译失败char *mychar = NULL;//或者char *mychar=0;编译通过 cout << mychar << endl;即使编译通过,程序也会停止运行。(原因:指针指向了NULL,空指针)原创 2017-10-29 08:00:44 · 241 阅读 · 0 评论 -
int **p二级指针
int **p二级指针*p和**p的区别:int *p:一级指针,表示p所指向的地址里面存放的是一个int类型的值int **p:二级指针,表示p所指向的地址里面存放的是一个指向int类型的指针(即p指向的地址里面存放的是一个指向int的一级指针)例如:int i = 10; int *p = &i; int **p1 = &p; cout << *p << endl原创 2017-10-29 08:10:06 · 4793 阅读 · 1 评论 -
返回整型数据的指针int *p
int *p与整型变量int a = 3; int *p ; *p = &a;//不合法,出错*p值改变,p指向的变量的值也会改变int b; int *p = &b; *p = 100; cout << &b << ":变量b的地址:" << p << endl; cout<< "*p赋值会改变变量b的值:" << b << endl; cout 打印结果:原创 2017-10-29 08:12:50 · 1470 阅读 · 0 评论 -
静态成员变量
共享静态数据成员对象:类成员或者成员函数(类的范围内)普通数据成员和静态数据成员的区别1.普通数据成员属于类的对象,对象被创建后,普通数据成员才会分配内存。静态数据成员属于整个类,即使没有创建对象,它也存在。2.只能在类外进行初始化,默认初始化为0;3.可以使用类的对象,引用或指针访问静态数据成员4.类的任何成员函数都可以访问类的静态数据成员5.和普通成员一样,都可以有访问原创 2017-10-29 08:21:33 · 931 阅读 · 0 评论 -
静态成员函数
静态成员函数与静态数据成员一样,我们也可以创建一个静态成员函数,它为类的全部服务而不是为某一个类的具体对象服务。静态成员函数与静态数据成员一样,都是类的内部实现,属于类定义的一部分。普通的成员函数一般都隐含了一个this指针,this指针指向类的对象本身,因为普通成员函数总是具体的属于某个类的具体对象的。通常情况下,this是缺省的。如函数fn()实际上是this->fn()。但是与普通函数...原创 2017-10-29 08:25:55 · 448 阅读 · 0 评论 -
int (*p)[3]指向由整型数据组成的数组的指针
(*p)[]和二维数组使用int map[2][3] = { { 10, 20, 30 }, { 40, 50, 60 } }; int(*p)[3] = map; p++;//指向map[1][0]~map[1][2]的数组段的地址 cout << **p << endl;//map[1][0] cout << *p << endl; cout << *p + 1 << endl;原创 2017-10-29 08:18:40 · 2185 阅读 · 0 评论 -
int *a[n]和int (*b)[n]的区别(易混淆)
int *a[n](由返回整型数据的指针所组成的数组)1.指针数组;每n个元素全为指针的数组.2.a是一个指针数组,每一个指向一个int型方便理解: 是指针数组, 有 n 个成员,每个成员都是一个指针,共有n个指针int (*b)[n](指向由整型数据组成的数组的指针)1.数组指针;指针类型是 int [n]类型的数组.指向n个元素组成的数组的一个指针。2.b是一个指针,指原创 2017-10-29 17:02:29 · 15703 阅读 · 5 评论 -
int (*p)(int x)和int* p(int x)的区别
int (*p)(int x)是函数指针可以直接使用,它的返回值是int型int* p(int x);是一个返回值为int型指针的函数的声明不能直接用,必须先定义才能使用,它的返回值是int *型int * fun(){ int b = 90; int *a = &b; return a;}void main(){ cout << "b地址:"<<fu原创 2017-11-09 09:38:02 · 6759 阅读 · 0 评论 -
指针常量和常量指针的区别
本文概述 楼主再次更新本文内容,如本文测试的结果或者表述有错处之处,还望大家批评与指正,谢谢!更改时间:2019.3.30 备注:此文与一些相关的文章和部分教学视频不同之处就是:指针常量和常量指针的命名与本文讲述的相反,但含义以及作用是一样的。楼主主要是参考了一些比较经典的书籍来写本文的。对于命名相反的问题,还是望大家来分析一下,谢谢!(文章末尾专门对一些书籍的部分...原创 2017-11-04 11:01:27 · 19890 阅读 · 39 评论 -
int *pa(指针)和int *&pa(指针的引用)的区别
funa(int * pa);funb(int*& pb);两参数的数据交换的情况:funone(int *pa,int *pb):#includeusing namespace std;void funone(int *pa,int *pb){//单传递,只在函数里面实现了交换指针指向的地址值。 //执行函数之后,外部的两个指针指向的地址值不受函数内部的影响。 co原创 2017-11-18 21:17:43 · 7826 阅读 · 0 评论 -
VC++文件操作之最全篇
一、剖析VC中的文件操作 各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。 1.文件的查找 当对一个文件操作时,如果转载 2017-02-16 09:33:13 · 772 阅读 · 0 评论 -
常量指针与指针常量的区别(转帖)
三个名词虽然非常绕嘴,不过说的非常准确。用中国话的语义分析就可以很方便地把三个概念区分开。一) 常量指针。常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。在C/C++中,常量指针是这样声明的:1)const int *p;2)i转载 2017-02-10 13:25:15 · 240 阅读 · 0 评论 -
this指针的介绍和用法
参考书籍,孙鑫视频教学,百度等。---下文举的例子是错误的,楼主若有空会对此进行修改。记录时间:2019-3-4this指针的介绍this指针是面向对象程序设计的一项概念,在C++中,它表示当前运行的对象。在实现对象的方法时,this指针来获得该对象自身的引用。正如class Family类,创建了Family类的两个对象,即Chen1和Chen2。(1)假如Family类是”...原创 2017-01-20 13:45:55 · 9016 阅读 · 2 评论 -
动态存储区、静态存储区、堆和栈的区别
C/c++程序经过编译连接后形成的二进制映像文件,包括:栈,堆,数据段(只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成. 1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方式类似于数据结构中的栈。2.堆区转载 2017-02-08 17:59:21 · 33422 阅读 · 5 评论 -
变量的关键字
auto变量:函数内部无static声明的局部变量均为动态存储类别,被分配在动态区;存储类别为自动时,声明符auto可省略;自动变量被分配在动态区,未赋值时,其值未定义,每次调用重新赋值。用static声明局部变量对静态局部变量的说明:(1)分配在静态区,程序运结束释放存储单元。(2)赋初值时为0,前次结果保留(3)局部动态变量若未赋初值,其值不确定,局部静态变量未原创 2017-02-13 12:17:41 · 1628 阅读 · 0 评论