ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C类对象指针和访问成员函数

2019-10-04 01:15:15  阅读:243  来源: 互联网

标签:c class pointers object


我对C有点新,并尝试用Qt处理事情并遇到了这个令人困惑的事情:

各种教程的概念陈述如下:

Class *obj;

* obj – 将显示存储在引用内存中的对象的值
obj – 将指向它的内存地址

所以,我会做类似的事情

*obj=new Class();

但如果我想访问一个函数,我必须做obj-> function1();
而不是* obj-> function1();

– 不确定为什么,因为普通对象[normalObj.function1();]可以工作,因为这是直接的值.

那么,对于指针对象,我们为什么要使用内存引用来访问函数,
或者是在普通物体的情况下,它总是参考

P.S:有人可以指导我在C中使用指针的一个很好的教程,这样我的查询可以直接在其中解决.

解决方法:

*符号用于定义指针和取消引用指针.例如,如果我想创建一个指向int的指针,我可以这样做:

int * ptr;

在这个例子中,*用于声明这是一个指向int的指针.现在,当您没有声明指针并且使用带有已声明指针的*符号时,您将取消引用它.您可能知道,指针只是一个地址.取消引用指针时,您将获得该地址指向的值.例如:

int pointToMe = 5;
int *ptr = &pointToMe;
std::cout << *ptr;

这将打印5.此外,如果您指定一个指向新地址的指针并且它不在声明中,则不使用*符号.所以:

int pointToMe = 5;
int *ptr;
ptr = &pointToMe;

你是怎么做的.您还可以使用指针来为地址指向的值分配新值.如:

int pointToMe = 5;
int *ptr = &pointToMe;
std::cout << *ptr; // Prints out 5
*ptr = 27;
std::cout << *ptr; // Prints out 27

现在, – >行为就像是尊重符号.它将取消引用指针,然后使用成员函数和变量,就像您使用过一样.使用非指针对象.即使对象不是指针,您也可以使用 – >首先得到地址:

CObj object;
(&object)->MemberFunction();

这只是指针的简要概述,希望它有所帮助.

标签:c,class,pointers,object
来源: https://codeday.me/bug/20191004/1851500.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有