
请问这个this指针类型不是指针呢?
this不就是作为指针使用的吗?疑惑了
关注引自免费微信小程序:皆我百晓生
在 C 语言中,this 是一个特殊的内置关键字,它并不是一个标准类型的指针,但在概念上可以被视作指向当前对象的隐含指针。当你在类的方法(在 C 中通常称为结构体的成员函数)中使用 this 关键字时,它实际上是指向调用该方法的对象的地址。
在你提供的例子中,A.A(int a, int b) 是一个名为 A 的结构体的构造函数(尽管在 C 语言中没有正式的构造函数概念,但可以通过这种方式实现类似的功能)。这里的 this 指针指向正在初始化的新对象实例。由于 A.A() 方法是在处理 A 类型的对象,所以 this 的类型应该是 A *,即指向 A 结构体类型的指针。
因此,在选择题中,正确答案 C 表示的是 A 类型,这实际上是错误的描述,因为正确的类型应该是 A *。不过,如果题目意图是要表达 this 在上下文中代表的是对当前对象的引用,那么从语义上说,选项 D(可能是打字错误,应该是 A*)更接近正确答案。
如果你想要在 C 语言中创建一个类似于类的结构体,并使用类似 this 的指针,可以这样编写:
#include <stdio.h>
typedef struct {
int x;
int y;
} A;
void A_init(A *self, int a, int b) {
self->x = a;
self->y = b;
}
int main() {
A obj;
A_init(&obj, 5, 7);
printf("obj.x: %d, obj.y: %d\n", obj.x, obj.y);
return 0;
}
在这个例子中,我们使用了一个名为 A_init 的函数来初始化 A 结构体,参数 self 就相当于 this,它是一个指向 A 结构体的指针。我们在 main 函数中通过 &obj 获得 obj 的地址并传递给 A_init 函数,从而达到类似使用 this 的效果。