2013-03-13 167 views
1

我试图围绕指针,引用和地址包裹我的头,但每次我想我都会有意想不到的东西弹出来。指针和结构

为什么我们不需要在此示例中取消引用结构来设置值?

// pointer_tet.cpp 
#include <iostream> 
struct example 
{ 
    char name[20]; 
    int number; 
}; 
int main() 
{ 
    using namespace std; 
    example anExample = {"Test", 5}; 
    example * pt = &anExample; 
    pt->number = 6; 
    cout << pt->number << endl; 

    int anotherExample = 5; 
    int * pd = &anotherExample; 
    *pd = 6; 
    cout << *pd << endl; 

    return 0; 
} 

谢谢!

编辑:谢谢你的回答!我困惑的是无法设置* pt.number = 6.

+1

我没有看到任何你不取消设置值的地方。 – 2013-03-13 20:05:03

+2

嗯,你**是取消引用'pt'。 – AndiDog 2013-03-13 20:05:20

+0

你认为你不去参考? – tletnes 2013-03-13 20:06:08

回答

8

提领pt。你正在做的:

pt->number = 6; 

这相当于:

(*pt).number = 6; 

->运营商提供了一个便捷的方式,通过一个指针来访问成员。

+0

谢谢!有一天我读到了这个,但它已经滑落了我的脑海。谢谢!编辑:我必须等10分钟才能设置答案 – 2013-03-13 20:07:25

+0

这里的诀窍是'* pt.number'是'*(pt.number)' - 当天返回时,'*'的优先级被设置得很笨拙,并添加' - >'来弥补必须始终输入'(* pt).number'。 – Yakk 2013-03-13 20:34:37

0

你可以做

anExample.number = 6; 

OR

(*pt).number = 6; 

读cplusplus.com指针教程可能的帮助。