首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

指向类数据成员的指针

在C++中,可以定义一个指针,使其指向类成员或成员函数,然后通过指针 来访问类的成员。这包括指向属性成员的指针和指向成员函数的指针。它类似与static成员函数或成员变量,具有共享的属性。...每一个实例化的对象都可以借助指向类数据成员的指针来访问指向的数据。...// string *ps = &s1.name; // cout << *ps << endl; // 定义一个类中name成员的指针(记录name成员的偏移量) // 与实例化的对象无关,但实例化的对象可以使用该指针访问数据成员...*pf)(); (ps3->*pf)(); getchar(); return 0; } 以上均是指向非静态成员的类成员指针,而指向静态类成员的指针则非常简单。...●指向类静态成员函数的指针 指向静态成员函数的指针和普通指针相同,在定义时无须和类相关联,在使用时也 无须和具体的对象相关联。

17810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++指向数组元素的指针

    C++指向数组元素的指针 在C++中,一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址;指针变量既然可以指向变量,也可以指向数组元素,所谓数组元素的指针就是数组元素的地址...如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素,p+i和array+i就是array[i]的地址,或者说,它们指向array数组的第i个元素。...指向数组元素的指针变量也可以带下标,如p[i] 与* (p+i) 等价,引用一个数组元素,可用以下方法:  下标法,如array[i]形式 指针法,如*(a+i)或*(p+i)。...其中array是数组名,p是指向数组元素的指针变量。 经典案例:C++输出数组中的10个元素。...C++指向数组元素的指针 用指针输出数组中的10个数 更多案例可以go公众号:C语言入门到精通

    2.1K2319

    【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )

    文章目录 一、字符串 一级指针 内存模型 1、指定大小字符数组 2、未指定大小字符数组 3、指向常量字符串的指针 4、指向堆内存的指针 一、字符串 一级指针 内存模型 ---- #include <stdio.h...\0 字符 ; // 栈内存数组 指定大小 char array[5] = "abc"; 2、未指定大小字符数组 在 栈内存 中 , 声明 不指定大小的 字符数组 , 初始化 “123...字节 ; // 栈内存数组 不指定大小 char array2[] = "123"; 3、指向常量字符串的指针 在 栈内存 中 , 定义 局部变量 指针 p , 没有为该指针分配内存..., 该指针指向 字符串常量 “def” ; 在 全局区 的 常量区 中 , 定义 字符串常量 “def” ; // 定义指针 , 使用字符串赋值 char *p = "def"; 4...、指向堆内存的指针 先在 堆内存 中 , 分配 5 字节内存 ; 然后 在 全局区 的常量区 中 , 定义 字符串常量 “456” ; 最后 将 字符串常量 “456” 拷贝到 堆内存 分配的 内存中

    2.4K20

    C语言 | 指向指针的指针

    在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例82:C语言用指向指针的指针的方法对n个整数排序并输出;要求将排序单独写成一个函数;n个整数在主函数中输入,最后在主函数中输出。...解题思路:读者看着道题的时候,首先要观察一下有什么规律,然后指向指针的指针在上一道练习题中已经有了铺垫,读者可以联系上一道题去熟练使用指向指针的指针。...:");//提示语句 scanf("%d",&number);//键盘输入 for(i=0;i<number;i++) { pstr[i]=&data[i]; //将第i个整数的地址赋予指针数组...我们常说“学而不思则罔”,和学习编程知识一样,我们只有在学习的同时加以总结与思考,才能对编程有更系统和深入地了解,学到的知识才真正能为自己所用。

    3K32

    c++系列之二 指向成员函数的指针(烧脑)

    ,原文详细解释了C++中指向成员函数的指针,因为带有“教程”一词,所以比较通俗易懂。...因为 “一个指向虚成员的指针能在不同地址空间之间传递,只要二者使用的对象布局一样” (此话来自C++老爸 Bjarne Stroustrup 的 《C++程序设计语言》 )。...成员函数指针数组及其应用 成员函数指针的一个重要应用就是根据输入来生成响应事件,下面的 Printer 类和指针数组 pfm 展示了这一点: class Printer { // 一台虚拟的打印机 public...,而成员函数指针数组被用来根据菜单选项执行相应的打印动作。 成员函数指针另外一个重要的应用可以在STL的 mem_fun() 中找到。...成员函数指针和常规指针的对比 不同情形下的成员函数指针转换规则 如何使用成员函数指针数组来解决特定的设计问题 编译器是如何解释成员函数调用的 扩展:成员变量指针 http://luodw.cc/2015

    3.1K20

    指向函数的指针

    当调用一个函数时出了通过函数名来调用之外,还可以通过指向该函数的指针变量来调用。切记,和一切指针变量一样,一个指向函数的指针其初值也不能为空。因为它在使用之前必须被赋予一个真实的地址。...(2)、(*p)两侧括号不能省,p先与*结合,表面是一个指针变量,在后面的()的内容结合,表示此指针变量指向函数而非变量,如果去掉,如:double *p()表示p()的返回类型是一个指向double型变量的指针...(5)、数组名可以代表数组的起始地址(首元素的地址),所以函数名也可以代表函数的入口地址(函数中的首条指令的地址)。...但对于指向函数的指针变量,它只能指向函数的入口处而无法指向函数中某条具体的指令,因此,对于p+n,p++等指针运算对于指向函数的指针没有意义。...如:double (*p)(double , double); 所以,通过以上的了解,我们知道了指向函数的指针的灵活性,一个指针变量可以调用多个不同的函数,这对于程序的优化和简化都起了很大的作用。

    1.3K60

    指向函数的指针

    指向函数的指针 程序中定义函数后,对程序进行编译时,编译系统为函数分配一段存储空间存储二进制代码,这段内存空间的起始地址(也称入口地址)称为函数的指针。...程序中可以定义一个指针变量,用来存放一个函数的起始地址,即该指针变量指向一个函数,称为函数指针变量。...函数指针变量定义的一般形式如下: 类型说明符(*指针变量名)(函数的形参列表); 说明: (1)函数指针变量可以指向的函数满足两个条件:函数的返回值由上面“类型说明符”确定;函数的形参列表与上面...例如 int c=(*p1)(100,10); 上面语句调用指针p1指向的函数,实参为100和10,返回值赋值给变量c。...printf("输入整数四则运算式:"); scanf("%d%c%d",&x,&op,&y); switch(op)//根据运算符不同使p指向不同的函数 { case'+'

    80910

    C语言 | 指向指针的指针排序

    在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例81:C语言实现用指向指针的指针的方法对5个字符串排序并输出。...解题思路:读者看着道题的时候,首先要知道什么时指针,指向指针的指针应该怎么用,一般在开发中不这样用,读者要看明白,这个很锻炼思维的。...char **point,*pstr[5],str[5][LINEMAX];//定义变量 for(i=0;i<5;i++) { pstr[i]=str[i]; //将第i个字符串的首地址赋予指针数组...return 0;//主函数返回值为0 } void sort(char **point)//冒泡排序算法实现 { int i,j;//定义整型变量 char *temp;//定义字符指针变量

    1.7K32

    7.4 指向函数的指针

    一、什么是函数指针 解释:存储空间的起始地址(又称入口地址)称为这个函数的指针 二、用函数指针变量调用函数 (1)通过函数名调用 (2)通过指针变量访问它所指向的函数 三、定义和使用指向函数的指针变量...一般形式 类型名(*指针变量名)(函数参数表列) 注意: ①定义指向函数的指针变量,并不意味着这个指针变量可以指向任何函数,它只能指向在定义时指定的类型的函数 ②如果要用指针调用函数,必须先使指针变量指向该函数...③在给函数的入口地址赋值时,只需给出函数名而不必给出参数 ④用函数指针变量调用函数时,只需将(*p)代替函数名即可,在(*p)之后的括号中根据需要写上实参 ⑤对指向函数的指针变量不能进行算术运算 ⑥用函数名调用的函数...,只能调用所指定的一个函数,而通过指针变量调用函数比较灵活,可以根据不同情况先后调用不同的函数 四、用指向函数的指针作函数参数 指向函数的指针变量的一个重要用途是把函数的地址作为参数传递到其他函数

    8503329

    【C 语言】二级指针案例 ( 字符串切割 | 返回 自定义二级指针 作为结果 | 每个 一级指针 指向不同大小内存 | 精准分配每个 一级指针 指向的内存大小 )

    文章目录 一、二级指针案例 ( 返回自定义二级指针 | 精准控制内存大小 ) 二、完整代码示例 一、二级指针案例 ( 返回自定义二级指针 | 精准控制内存大小 ) ---- 博客 【C 语言】二级指针案例...( 字符串切割 | 返回 二维数组 作为结果 ) 中 , 使用 二维数组 , 接收字符串切割结果 ; 博客 【C 语言】二级指针案例 ( 字符串切割 | 返回 自定义二级指针 作为结果 ) 中 , 使用...自定义二级指针 , 接收字符串切割结果 ; 先分析出该 字符串中, 有多少个 逗号 字符 , 可以得到 二级指针 指向的 内存空间中 , 要存储多少 一级指针 , 也就是分析出有多少 行 , 然后在分析...p1 - p2 > 0) { // 计算精准控制的 一级指针 指向的内存大小 int len = p1 - p2...p1 - p2 > 0) { // 计算精准控制的 一级指针 指向的内存大小 int len = p1 - p2

    1.9K10

    8.5 指向函数的指针

    2、可以定义一个指向函数的指针变量,用来存放某一函数的起始地址,这就意味着此指针变量指向该函数。...3、例子 int (*p)(int,int); 定义p是一个指向函数的指针变量,它可以指向函数的类型为整型且有两个整型参数的函数。p的类型用int(*)(int,int)表示。...2、定义指向函数的指针变量,并不意味着这个指针变量可以指向任何函数,它只能指向在定义时指定的类型的函数。 3、如果要用指针调用函数,必须先使指针变量指向该函数。...7、用函数名调用函数,只能调用所指定的一个函数,而通过指针变量调用函数比较灵活,可以根据不同情况先后调用不同的函数。...04 用指向函数的指针作函数参数 1、指向函数的指针变量的一个重要用途是把函数的地址作为参数传递到其他函数。

    9363029

    C++ this指针:用于在成员函数中指向调用该函数的对象

    C++中this指针是一个指向当前对象的指针。在成员函数中,可以使用this指针来访问调用该函数的对象的成员变量和成员函数。...一、定义和使用this指针 this指针是在成员函数内部定义的一个常量指针。它存储了当前对象的地址,可以通过它访问当前对象的成员变量和成员函数。...二、作为返回值的this指针 this指针可以作为返回值返回。这种情况下,返回的是指向调用该函数的对象的指针。为了实现这个功能,需要将返回类型设置为类的引用或指针类型。...person.setName("Tom").setName("Jerry"); std::cout << person.getName() << std::endl; // 输出Jerry 在setName函数内部,返回的是指向调用该函数的对象的指针...这里使用了*this来访问调用该函数的对象。 三、作为函数参数的this指针 this指针也可以作为函数参数传递。这种情况下,可以在函数内部访问其他对象的成员变量和成员函数。

    26040

    c语言之指向二维数组元素的指针变量

    如何使用指针对二维数组进行遍历?...] = {4,5,6},我们知道,一维数组在内存中是连续的一块内存,并且数组名a0,a1代表的就是该数组首元素的地址,而正因为二维数组的内存中的地址也是连续的,所以a1的首元素的地址就为a0数组首元素的地址...+a0中元素的个数,因此,我们就可以通过让指针不断+1来访问其中的每一个元素,不用再考虑行与列的限制。...#include #include //利用指针来遍历二维数组 void printArr(int *p,int m,int n) { for (int...(3)遍历时让指针p一直向后移动到二维数组的末尾,可以看做将二维数组展开成一维数组,再计算移动的次数。 (4)当访问到的位置是列的整数倍时,进行换行,方便显示。

    1.3K20

    《挑战30天C++入门极限》CC++中字符指针数组及指向指针的指针的含义

    C/C++中字符指针数组及指向指针的指针的含义   就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针。   ...char* *b=a;//定义一个指向指针的指针,并赋予指针数组首地址所指向的第一个字符串的地址也就是abc\0字符串的首地址 cout<<*b<<"|"<<*(b+1)<<...endl; } }   下面我们来仔细说明一下字符指针数组和指向指针的指针,段1中的程序是下面的样子: char *a[]={"abc","cde","fgh"}; char*...如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。...定义一个指向函数的指针用如下的形式,以上面的test()为例: int (*fp)(int a);//这里就定义了一个指向函数的指针   函数指针不能绝对不能指向不同类型,或者是带不同形参的函数

    1.3K20
    领券