背景
首先来看一下在C语言中,我们定义一个结构体,如何通过函数实现对结构体成员的赋值?答案当然是通过传指针的方式;在实参中传入变量的地址,就可以达到在函数中修改变量各个成员内容的效果。
方式如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Student
{
char _name[20];
char _gender[3];
int _age;
};
//设置学生的基本信息
void SetStudentInfo(struct Student*ps,char*name, char*gender, int age)
{
strcpy(ps->_name, name);
strcpy(ps->_gender, gender);
ps->_age = age;
}
//打印
void print(struct Student*ps)
{
printf("%s %s %d", ps->_name, ps->_gender, ps->_age);
}
int main()
{
struct Student s1, s2;//定义了s1与s2两个变量
SetStudentInfo(&s1, "zhangsan", "nan", 18);//传入s1变量地址,打印相关信息
print(&s1);
SetStudentInfo(&s2, "lisi", "nv", 19);//传入s2变量地址,打印相关信息
print(&s2);
system("pause");
return 0;
}
结果:
如果把上面的ps指针换成pthis,现在你会不会联想到C++中的this指针呢?
void SetStudentInfo( Student*pthis,char*name, char*gender, int age)
{
strcpy(pthis->_name, name);
strcpy(pthis->_gender, gender);
pthis->_age = age;
}
void print( Student*pthis)
{
//cout << _name << " " << _gender << " " << _age << endl;
printf("%s %s %d\n", pthis->_name, pthis->_gender, pthis->_age);
}
正题:this指针
(一)在类中,数据是怎么存储的?
猜想一:每一个对象数据和代码独有