二级指针的定义有两种: 1.int i ; int*pi=&i; int*ppi=&*pi; 2.int i,*pi,**ppi; pi=&i; ppi=π

2025-04-15 08:08:06
推荐回答(4个)
回答1:

你的理解没错,你看题目,int *ppi = &*pi; 这句,ppi本身定义的就是一个一级指针,没人说是二级指针啊,你干嘛要把它理解为二级指针啊。如果是二级指针的话,是你说的那样 int **ppi = π

回答2:

A *root; // 表示声明一个指向A结构类型的指针
root->ptr这个写法正确

"->"运算符用于结构/类指针引用成员变量;
"."运算符用于结构/类实例(对象)引用成员变量。

就你这个例子说明一下:
定义结构体A
struct A{
int B;
A *ptr;
};
...
int main(void){
A *root; // 声明一个指向结构体A的指针
A a; // 声明一个结构体A实例(对象)

root = new A; // 在内存上创建A的实例,并将该实例的地址返回给指针root

// 分别初始化root及a,注意在引用成员变量时的差异
root->B = 0;
root->ptr = NULL;
a.B = 0;
a.ptr = NULL;

delete root; //释放root指向的实例
return 0;
}

回答3:

两种定义下的ppi不同,1中是一级指针,你看定义int *ppi,而2中是二级指针,int **ppi,你可能是从其命名上认为ppi就应该是二级指针吧。你的理解是正确的。

回答4:

你的理解正确