这是什么指针? 它不适用于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;
}
答案 0 :(得分:4)
在C中,this
是一个普通的参数名称,与其他任何名称都没有区别。
您可能正在使用C ++编译器,其中this
是关键字,并且在用作参数时会出错。
答案 1 :(得分:2)
在C ++中,this
是类方法中使用的保留字,作为指向相关对象的指针。它是不 C中的保留字,所以在这种情况下它只是参数的名称。
此代码可以使用gcc进行编译(假设您将this->.name
更改为this->name
),但由于这个原因,它无法使用g ++进行编译。