1. 输出一个人的姓名和年龄
#include <stdio.h>
int main(intargc, char **argv)
{
char *zs_name = "zhangsan";
int zs_age = 10;
char *ls_name = "lisi";
int ls_age = 16;
printf("name = %s, age = %d\n",zs_name, zs_age);
printf("name = %s, age = %d\n",ls_name, ls_age);
return 0;
}
2. 输出多个人的工作和年龄
#include <stdio.h>
int main(intargc, char **argv)
{
char *names[] = {"zhangsan", "lisi"};
char ages[] = {10, 16};
char *work[] = {"teacher", "doctor"};
int i;
for (i = 0;i < 2; i++)
{
printf("name= %s, age= %d\n",names[i], ages[i]);
}
return 0;
}
3. 输出多个人多项信息,引入结构体
#include <stdio.h>
struct person {
char *name;
int age;
char *work;
void (*printInfo)(struct person *per);
};
int main(intargc, char **argv)
{
struct person persons[] = {
{"zhangsan",10, "teacher"},
{"lisi",16, "doctor"},
};
int i;
for (i = 0;i < 2; i++)
{
printf("name= %s, age= %d,work = %s\n",persons[i].name, persons[i].age, persons[i].work);
}
return 0;
}
4. 结构体内定义函数,在c语言内只能写函数指针
#include <stdio.h>
struct person {
char *name;
int age;
char *work;
void (*printInfo)(struct person *per);
};
void printInfo(structperson *per)
{
printf("name = %s, age = %d, work = %s\n",per->name, per->age, per->work);
}
int main(intargc, char **argv)
{
struct person persons[] = {
{"zhangsan",10, "teacher",printInfo},
{"lisi",16, "doctor",printInfo},
};
persons[0].printInfo(&persons[0]);
persons[1].printInfo(&persons[1]);
return 0;
}
5. 另存为cpp文件,直接在结构体里面写上函数
#include <stdio.h>
struct person {
char *name;
int age;
char *work;
void printInfo(void)
{
printf("name= %s, age= %d,work = %s\n",name, age, work);
}
};
int main(intargc, char **argv)
{
struct person persons[] = {
{"zhangsan",10, "teacher"},
{"lisi",16, "doctor"},
};
persons[0].printInfo();
persons[1].printInfo();
return 0;
}
C++对struct做了两个扩展
1. 可以在结构体里面直接写函数
2. 函数可以直接访问结构体里面的属性
由此引出class。
#include <stdio.h>
class person {
public:
char *name;
int age;
char *work;
void printInfo(void)
{
printf("name= %s, age= %d,work = %s\n",name, age, work);
}
};
int main(intargc, char **argv)
{
struct person persons[] = {
{"zhangsan",10, "teacher"},
{"lisi",16, "doctor"},
};
persons[0].printInfo();
persons[1].printInfo();
return 0;
}
6. 面向对象三大特性:封装,继承,多态。