:this指针,通过this指针来访问自己的地址。...注意: this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。...this指针的类型取决于使用this指针的成员函数类型以及对象类型, 一、this指针的概念 定义 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。...this指针的创建 this指针在成员函数的开始执行前构造的,在成员的执行结束后清除。 this指针只有在成员函数中才有定义。 创建一个对象后,不能通过对象使用this指针。...也无法知道一个对象的this指针的位置(只有在成员函数里才有this指针的位置)。当然,在成员函数里,你是可以知道this指针的位置的(可以&this获得),也可以直接使用的。
在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。...友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。...下面的实例有助于更好地理解 this 指针的概念:实例#include using namespace std; class Box{ public: // 构造函数定义
c++指针使用注意点 避免野指针的产生 “野指针”的成因主要有: 1)指针变量没有被初始化。...任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。...c.内存越界 1 char *p=new char[3]; //分配三个字符空间,p指向该内存空间 2 strcpy(p,"abcd"); //将abcd存处在分配的内存空间中,由于strlen...e.指针做形参 即所谓的地址传递,我们都知道地址传递的方式,形参的改变会导致实参的改变,但要注意的是,这里的改变是指指针所指内容的改变,而不是指针值的改变。...继续看下面的情况,修改指针的内容: #include using namespace std; void fun(char *p) { p[0]='c'; //改变p的内容
2:如何规避野指针 1.1:指针变量的初始化 2.2:指针越界访问 3.3:指针指向的空间如果我们还回去的话,就把指针指针置为NULL 4.4:指针使用之前检查有效性 1:什么是野指针?...指针越界也会导致野指针问题,这里解释下:就是当你指针指向的范围超过数组名范围时,那么那个指针就是野指针了。...2:如何规避野指针 1.1:指针变量的初始化 int a = 10; int* pa = &a; //指针变量的初始化 指针常见错误 引用未初始化的指针变量 试图引用未初始化的指针变量是初学者最容易犯的错误...3.3:指针指向的空间如果我们还回去的话,就把指针指针置为NULL NULL——空指针,用来初始化指针或者给指针赋值,可以转到定义看看 #define NULL ((void *)0) 说的简单一点就是...空指针不应与未初始化的指针混淆:保证空指针与指向有效对象的任何指针进行比较。但是,根据语言和实现,未初始化的指针可能没有任何此类保证。它可能与其他有效指针相等; 或者它可能比较等于空指针。
指针是什么? 指针是什么? 指针理解的 2 个要点: 1. 指针是内存中一个最小单元的编号,也就是地址 2....平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量 总结: 指针就是地址,口语中说的指针通常指的是指针变量。...野指针 概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的) 3.1 野指针成因 1....指针运算 指针 +- 整数 指针 - 指针 指针的关系运算 4.1 指针+-整数 #define N_VALUES 5 float values[N_VALUES]; float *...二级指针 指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里? 这就是 二级指针 。
一、指针的基本概念 指针的作用:可以通过指针间接访问内存。 内存编号是从0开始记录的,一般用十六进制数字表示。 可以利用指针变量保存地址。...四、空指针和野指针 1.空指针:指针变量指向内存中编号为0的空间。 用途:初始化指针变量。 注意:空指针指向的内存是不能够访问的。...; 五、const修饰指针 const修饰的指针有三种情况: const修饰指针--常量指针 const修饰常量--指针常量 const修饰指针,又修饰常量 int a = 10; int...b = 10; //常量指针,指针指向的值不可以改,指针的指向可以改 //即*p=20是非法的,p=&b是合法的 const int* p = &a; //指针常量,指针的指向不可以改...,指向数组的第一个元素,在数组中用下标访问元素的值时,相当于是将指针指向该元素的内存空间 //我的理解是c++会自己定位到那,并取得值 for (int i = length - 1;
this指针指向被调用的成员函数所属的对象。 this指针是隐含每一个非静态成员函数内的一种指针。 this指针不需要定义,直接使用即可。
类的大小 有个问题是刚开始学习C++的人都想知道的,那就是C++的类对象的大小是多少?可能的猜测是它所有数据成员的大小加上所有函数指针的大小,这样就是类的大小。...那么C++类的函数成员是怎么确定是哪一个对象在调用它? 为了解决这个问题,C++设计了一个叫做this指针的东西。它能帮助成员函数知道谁在调用它。...this指针 this指针存放着当前对象的地址,也就是this指针指向当前对象。可以使用它来返回对象本身。 this指针不是对象的成员。...this指针只能在成员函数内部使用,类外以及成员函数外部都不能使用。 this指针是普通成员函数的一个隐藏参数。 注意:类的静态成员函数不具备this指针。这样就限制了静态成员函数的功能。...this指针的另外一个附加功能就是当类数据成员和类的函数参数名称一致的时候,使用this指针可以避免混淆。就像下面代码中的一样。
函数指针基础: 1. 获取函数的地址 2. 声明一个函数指针 3.使用函数指针来调用函数 获取函数指针: 函数的地址就是函数名,要将函数作为参数进行传递,必须传递函数名。...声明函数指针 声明指针时,必须指定指针指向的数据类型,同样,声明指向函数的指针时,必须指定指针指向的函数类型,这意味着声明应当指定函数的返回类型以及函数的参数列表。...例如: double cal(int); // prototype double (*pf)(int); // 指针pf指向的函数, 输入参数为int,返回值为double pf = cal;...// 指针赋值 如果将指针作为函数的参数传递: void estimate(int lines, double (*pf)(int)); // 函数指针作为参数传递 使用指针调用函数 double...函数指针的使用: #include #include #include using namespace std; double
指针的理解 1. 指针是一个值为内存地址的变量。 2. 指针本质上是地址,是计算机存放数据的空间。 3. 在通常情况下,我们把等号左边的指针理解成正常指针,把等号右边的指针理解成地址。...指向一级指针的指针就是二级指针。 2. 二级指针里面存放的是一级指针的地址。...指针与整数之间的运算,实际上要看指针指向变量的类型。 2. 指针指向变量的类型决定了指针运算时的步长。...未初始化的指针就是野指针,野指针可以指向任何地方,可能会造成非法访问内存地址。 2. 野指针不会直接引发错误,操作野指针指向的内存区域才会出问题。 3. 尽量避免野指针的形成。...NULL 是C语言中定义的⼀个标识符常量,值是0,地址也是0,这个地址是无法使用的,读写该地址会报错。所以在解引用之前,必须确保它不是一个NULL指针。 4.
目录 指针是什么? 指针变量 使用指针变量的例子 通过指针引用数组 &数组名vs数组名 野指针 野指针成因 如何避免野指针 指针运算 指针是什么?...指针是c语言中的一个重要概念,也是C语言的一个重要的特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,可以说,不掌握指针就是没有掌握C的精华也可以说...指针是C语言的灵魂(doge) 由于通过地址能找到所需的变量单元,可以说,地址指向变量单元,打个比方,一个房间的门口挂了一个房间号2008,这个2008就是房间的地址,或者说,2008"指向"...下面来看一段代码: 这里我们可以发现p跟p+1相差1 这里c是多少呢 ?...16进制的C的10进制是12,所以q+1和q相差4 p是整型指针相当于sizeof(int)=4 q是字符型指针相当于sizeof(char)=1; 以上就是我归纳指针的一些小结 如果能帮助友友们 -
C++的this指针 当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。 对于一个类的实例来说, 你可以看到它的成员函数、成员变量, 但是实例本身呢?...this是一个指针,它时时刻刻指向你这个实例本身。 C++在初始化对象时,每个对象中的数据成员都会得到系统分配的自己独立的存储空间。...那么我们就会使用this指针。 this指针的特性: 1、this指针的类型const(类名const),为右值。...4、this指针是类成员函数的第一个默认隐含参数,编译器自动维护传递,类编写者不能显式传递。 5、只有在类的非静态成员函数中才可以使用this指针, 其它任何函数都不可以。...6、this指针时刻指向对象 。 7、当this指针指向空时,是不会指向对象的。
C++指针运算 指针变量加或减 一个整数 p++; p--; p+i; p-i; C++规定,一个指针变量加或减一个整数是将该指针变量的原值和它指向的变量所占用的内存单元字节数相加或相减。...C++指针变量赋值 将一个变量地址赋给一个指针变量。...C++两个指针变量可以相减 如果两个指针变量指向同一个数组的元素,则两个指针变量值之差是两个指针之间的元素个数。...C++使用指针的优缺点 指针是C语言和C++的重要组成部分,使用指针的优点是: 提高程序效率。...使用指针的缺点是: 指针使用实在太灵活,对不熟练的程序员来说,很容易出错,而且出现的错误很难发现。 C++指针运算 更多案例可以go公众号:C语言入门到精通
当你对C越来越熟悉时,你会发现,把与指针搅和在一起的“类型”这个概念分成“指针的类型”和“指针所指向的类型”两个概念,是精通指针的关键点之一。...数组和指针的关系 如果对声明数组的语句不太明白的话,请参阅我前段时间贴出的文章c和c++的复杂类型声明>>。数组的数组名其实可以看作一个指针。...答案: ptr->a; ptr->b; ptr->c; 又请问怎样通过指针pstr来访问ss的三个成员变量? 答案: *pstr;//访问了ss的成员a。...*(pstr+2)//访问了ss的成员c。...所有的C/C++编译器在排列数组的单元时,总是把各个数组单元存放在连续的存储区里,单元和单元之间没有空隙。
C语言指针的总结 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一个字节都有一个内存地址,这个地址是一个十六进制的数。...什么是指针:变量的地址叫做指针,指针就是地址,地址就是指针。 下面通过一张图可以更直观的理解内存中的地址 ? 内存中的地址演示图 2. 指针 指针是C语言的灵魂。指针变量占据8个字节。...p操作的是p这个指针变量,可以取p得值,也可以为p赋值 指针变量的使用 可以使用指针间接的操作指针指向的变量。 *p 代表 p 指针指向的变量。...指针为什么要分类型? 多级指针 一个指针变量中存储的是一个一级指针的地址,那么它就是二级指针,一个指针变量中存储的是一个二级指针的地址,那么它就是三级指针。...二级指针:数据类型 ** 指针名 二级指针只能存储一级指针变量的地址。 多级指针在开发中很少用到,遇到多级指针耐心分析一定可以理清其中的关系。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址 编号 = 地址 = 指针 指针变量 = 变量 = 存放地址的变量 ---- 一、指针 … 一个内存单元多大比较合适.../0 32位机器,上面有32根地址线 2的32次方个字节的空间 - - - 4,294,967,296 Byte — 4GB ---- 通过pa里存放的a的地址找到a ---- 三、指针变量的大小...指针变量是用来存放地址的 32位机器上:地址是32个二进制位,这个地址要存储的话要4个字节,所以在32位机器上,指针变量的大小是4个字节。...64位机器上:地址是64个二进制位,这个地址要存储的话要8个字节,所以在64位机器上,指针变量的大小是8个字节。
二、指针的定义 三、指针的初始化 四、指针运算符 五、指针的用途举例 六、关于指针的疑问 指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。...1.我们已经知道,"直接引用"是直接通过变量名来读写变量 2.C语言中还有一种"间接引用"的方式(以变量a为例):首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a...* 看下面的代码,利用指针p读取变量c的值 1 int i = 2; 2 char c = 1; 3 4 // 定义一个指向char类型的指针 5 char *p = &c; 6 7 // 取出 8...* 如果我改一下第5行的代码,用一个本应该指向int类型变量的指针p,指向char类型的变量c int *p = &c; 我们再来看一下输出: ? ,c的原值是1,现在取出来却是513,怎么回事呢?...这个要根据内存来分析 根据变量的定义顺序,这些变量在内存中大致如下图排布: 其中,指针变量p和int类型变量i各占2个字节,char类型的c占一个字节,p指向c,因此p值就是c的地址 ?
本文链接:https://blog.csdn.net/ZY_FlyWay/article/details/102490751 最近在blink看到很多刚学C++的学弟学妹,手有点痒,毕业快5年了,C...写这篇文章回顾下C++我在大学学习时候的误区,希望可以让和我一样的同学少走点弯路。 指针 这是我大学的噩梦,好几个问题一直在脑子里转来转去,虽然老师讲了指针就是一块内存,它可以指向另一个内存。...<< "pp的指向地址:" << pp << endl; cout << "ppp的指向地址:" << ppp << endl; } 打印结果如下: a的地址:0x7ffeefbff55c...p的地址:0x7ffeefbff550 pp的地址:0x7ffeefbff548 ppp的地址:0x7ffeefbff540 p的指向地址:0x7ffeefbff55c pp的指向地址:0x7ffeefbff550...问题三: 数组和指针的关系 ---- 相信学C语言的同学一定想过这个问题。
函数指针 可以使用算法的地址传递给方法,传递之前要先完成以下工作 1.获取函数的地址 2.声明一个函数指针 3.使用函数指针来调用函数 1.获取函数的地址,只要使用函数名就可以 Fun2(Fun1);...Fun2就可以在程序内部调用Fun1()函数 2.声明函数指针 声明时一定要指定指针指向的类型。...同样,声明指向函数的指针时,必须指定指针指向的函数类型。...如一个函数的原型为 int Fun1(int a); 指针类型声明: int (*pt)(int);//只是将Fun1换成了 *pt *pt 是函数, pt是函数的指针 //声明后赋值 pt = Fun1...; 3.使用指针来调用函数 上面的声明说过 *pt和函数名是一样的,使用*pt和就可以调用 方法 int Fun1(int a); int (*pt)(int); pt = Fun1; int _va
指针:是说指针名表示的是地址。...是一个变量,存储的是值的地址,而不是值本身 *运算符被称为间接值或解除引用运算符也可以叫做取地址符 声明一个指针 int * p_data; * p_data的类型为int 由于*运算符被用于指针...,因此p_data变量本身必须是指针。 ...我们说p_data指向int类型,我们还说P_data的类型是指向int的指针,或int* 可以这样说p_data是指针(地 址),而*p_data是int,而不是指针 初始化指针 int value=...,可以把指针初始化等于0的指针指针为nullptr不指向任何对象 int* myValue(nullptr); nullptr可以隐式转换为bool类型 可以这么判断 if(!
领取专属 10元无门槛券
手把手带您无忧上云