我知道变量的指针.
int x = 10;
int *ptr = &x;
Run Code Online (Sandbox Code Playgroud)
在这些表达中涉及三件事:
x占用2字节的内存bcos是一个整数.
ptr也需要2个字节.
如果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有会员吗?如果它有成员那么会有什么类型的成员?(指针或变量)
还有一件事 - 用类的对象代替它
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)