指向结构的指针是如何工作的?

Har*_*hal 1 c++ structure

我知道变量的指针.

int  x = 10;
int *ptr = &x;
Run Code Online (Sandbox Code Playgroud)

在这些表达中涉及三件事:

  1. x占用2字节的内存bcos是一个整数.

  2. ptr也需要2个字节.

  3. 如果x的内存地址为1004,那么ptr将存储1004.

在这个例子中,每当我们在程序中使用*ptr时,它给出了一个存储在内存地址的值 - 1004

但结构会发生什么?我们举个例子:

struct book {
int a;
int b;
}
struct book str1, str2;
struct book *ptr = &str1;
Run Code Online (Sandbox Code Playgroud)

关于这个例子我有三个问题:

1)ptr如何保存str1的完整地址?

2)什么差异.变量指针和内存中完整结构的指针之间?

3)ptr需要多少字节?

4)做ptr有会员吗?如果它有成员那么会有什么类型的成员?(指针或变量)

还有一件事 - 用类的对象代替它

nuc*_*eon 5

1)ptr如何保存str1的完整地址?

它包含起始地址.它不需要保持范围或任何东西.

2)如何在内存中构建ptr?

在内部,它是32位或64位无符号整数,具体取决于操作系统位宽(解释为指针).

3)ptr需要多少字节?

4或8个字节(对于32位或64位OS).

4)做ptr有会员吗?如果它有成员那么会有什么类型的成员?(指针或变量)

您可以使用->运算符取消引用指针,如下所示

int x = ptr->a;
Run Code Online (Sandbox Code Playgroud)