写一段C语言代码说明面向对象和面向过程的区别
时间: 2024-05-16 21:17:00 浏览: 11
面向对象和面向过程是两种不同的编程思想。面向过程编程是一种以任务为中心的编程思想,它将程序看作一系列函数的集合,这些函数完成特定的任务。而面向对象编程则是一种以对象为中心的编程思想,它将程序看作一系列对象的集合,这些对象包含数据和方法,可以相互交互。
下面是一段用C语言实现的面向过程的代码,它实现了一个简单的计算器功能:
```c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int main() {
int a = 10, b = 5;
int result1 = add(a, b);
int result2 = sub(a, b);
printf("a + b = %d\n", result1);
printf("a - b = %d\n", result2);
return 0;
}
```
而下面是用C语言实现的面向对象的代码,它实现了一个简单的人类类和一个学生类:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[20];
int age;
} Person;
typedef struct {
Person person;
int id;
int grade;
} Student;
void init_person(Person *person, char *name, int age) {
strcpy(person->name, name);
person->age = age;
}
void init_student(Student *student, char *name, int age, int id, int grade) {
init_person(&student->person, name, age);
student->id = id;
student->grade = grade;
}
void print_person(Person *person) {
printf("Name: %s\n", person->name);
printf("Age: %d\n", person->age);
}
void print_student(Student *student) {
print_person(&student->person);
printf("ID: %d\n", student->id);
printf("Grade: %d\n", student->grade);
}
int main() {
Student student;
init_student(&student, "Tom", 18, 1001, 90);
print_student(&student);
return 0;
}
```
可以看到,面向对象的代码中定义了两个类,Person和Student,它们都有自己的数据和方法。在初始化对象时,需要调用类的构造函数来初始化对象。而在调用对象的方法时,则需要使用对象的指针作为参数。相比于面向过程的代码,面向对象的代码更加清晰、灵活,可以更方便地扩展和维护。