c语言中的(* this)是什么?

时间:2015-10-04 00:24:03

标签: c

这是什么指针? 它不适用于linux ..但在Visual studio中它可以工作 发生什么事了?

    #include <stdio.h>
    #include <string.h>
    #include<stdlib.h>
    typedef struct {  char name[20]; int id; } person ;

    // this function is my main problem        
    void print(person *this){
         printf("%s %d\n",this->.name,this->id);  
    }

    int main(){
        person p, q;  
        strcpy(p.name, "a");
        p.id=60151234;
        strcpy(q.name, "b");
        q.id=60155678;

        print(&p);
        print(&q);
        system("pause");
        return 0;
    }

2 个答案:

答案 0 :(得分:4)

在C中,this是一个普通的参数名称,与其他任何名称都没有区别。

您可能正在使用C ++编译器,其中this是关键字,并且在用作参数时会出错。

答案 1 :(得分:2)

在C ++中,this是类方法中使用的保留字,作为指向相关对象的指针。它是 C中的保留字,所以在这种情况下它只是参数的名称。

此代码可以使用gcc进行编译(假设您将this->.name更改为this->name),但由于这个原因,它无法使用g ++进行编译。