C语言中public
时间: 2024-09-30 17:16:08 浏览: 19
在C语言中,`public`是一个访问控制修饰符,通常用于结构体、枚举和函数的成员声明。它决定了该成员对外部代码的可见性和可访问性。当一个成员被声明为`public`时,其他程序可以无限制地访问和修改这个成员的值。例如,在定义了一个结构体并将其部分字段设置为`public`之后,外部函数可以直接通过这个结构体的指针来操作这些公共成员。
```c
typedef struct {
public int public_field;
int private_field; // 默认访问权限是private,只有在同一结构体内部才能访问
} PublicStruct;
void display(PublicStruct *ptr) { // 这里可以访问public_field
printf("Public field: %d\n", ptr->public_field);
}
int main() {
PublicStruct obj = {5};
display(&obj); // 在main函数中也可以直接访问public_field
return 0;
}
```
相关问题
c语言中public的用法
在C语言中,没有像其他面向对象编程语言那样的public关键字。C语言中一般使用结构体来封装数据和函数,并通过结构体的成员访问控制来实现类似public的效果。
在结构体中,可以将需要公开访问的成员定义在结构体的外部,而将需要私有访问的成员定义在结构体的内部。这样,在外部使用该结构体时,只能访问到公开的成员,而无法访问到结构体内部的私有成员。
例如:
```
// 定义结构体
typedef struct Student {
char name[20]; // 私有成员
int age; // 公开成员
} Student;
// 对外公开的函数
void set_name(Student *s, char *name) {
strcpy(s->name, name);
}
// 对外公开的函数
char *get_name(Student *s) {
return s->name;
}
int main() {
Student s;
s.age = 20;
set_name(&s, "Tom");
printf("name: %s, age: %d\n", get_name(&s), s.age); // 输出name: Tom, age: 20
return 0;
}
```
在上面的例子中,结构体Student中的name成员是私有成员,而age成员是公开成员。对外公开的函数set_name和get_name可以访问到私有成员name,并对其进行赋值和返回。在main函数中,我们可以通过set_name和get_name来访问私有成员name,并通过直接访问公开成员age来访问结构体的公开成员。
C语言中this的用法
在C语言中,关键字"this"不存在。它是C++语言中用于指向当前对象的指针。在C++中,"this"指针可以在类的成员函数中使用,用于访问当前对象的成员变量和成员函数。
例如,假设有一个名为Person的类,具有成员变量name和age,以及成员函数printInfo():
```cpp
class Person {
private:
string name;
int age;
public:
void printInfo() {
cout << "Name: " << this->name << endl;
cout << "Age: " << this->age << endl;
}
};
```
在printInfo()函数中,使用"this->"来访问当前对象的成员变量name和age。"this"指针指向当前对象,在成员函数内部使用它可以明确地指示访问当前对象的成员。
需要注意的是,C语言不支持类和对象的概念,因此也没有"this"指针。在C语言中,可以通过函数参数来传递对象的指针或者使用全局变量来访问对象的成员。
阅读全文