c语言什么时候用箭头什么时候用点来表示指针调用
时间: 2023-04-09 12:03:31 浏览: 276
通常情况下,使用箭头(->)来表示指针调用结构体或联合体中的成员,使用点(.)来表示指针调用普通变量或结构体或联合体的成员。例如,如果有一个结构体指针p,它指向一个结构体s,那么可以使用p->member来访问结构体s中的成员member。如果有一个普通的结构体s,那么可以使用s.member来访问结构体s中的成员member。
相关问题
C语言 结构体 点和箭头
在C语言中,结构体是一种自定义的数据类型,它允许程序员组合不同类型的数据成员,以创建一个新的数据单元。结构体可以包含各种基本数据类型(如int、float等)和指针,也可以嵌套其他结构体。
"点"运算符"."在C语言中用于访问结构体内的成员。当你有一个结构体变量,并想要获取其内部某个成员的值时,你可以使用点运算符。例如:
```c
typedef struct {
int age;
char name[50];
} Person;
Person p; // 创建一个Person类型的结构体实例
p.age = 30; // 设置age成员的值
printf("%d", p.age); // 输出年龄
```
这里的`p.age`就是通过点运算符访问结构体`p`内的`age`成员。
而"箭头"这个表述并不是C语言的标准语法。如果是指C++中的`->`运算符,那么它是在指针指向的对象上调用成员函数的情况,比如:
```c++
Person* ptr = &p; // 定义一个指向Person的指针
ptr->name = "Tom"; // 通过指针操作,设置姓名成员的值
```
在这里,`ptr->name`表示通过指针`ptr`访问`name`成员。
c语言函数中调用指针
在C语言中,可以通过函数指针来调用函数。首先,需要定义一个函数指针,表示指向函数的指针。函数指针的定义方法是将函数名修改为指针名,并用括号括起来,例如`void (*p)();`。然后,将函数指针指向要调用的函数,可以通过将函数名赋值给函数指针来实现。最后,通过函数指针的调用运算符`()`来调用函数。例如,如果函数指针`p`指向一个无返回值、无参数的函数`hello()`,可以通过`p()`来调用该函数。\[1\]
另外,在C语言中还可以使用指针数组来存储多个指针变量。指针数组是一个数组,其中的每一项都是一个指针变量。可以通过将变量的地址赋值给指针数组的元素来实现。例如,可以定义一个指针数组`int *parray\[3\];`,并将变量`a`、`b`、`c`的地址分别赋值给`parray\[0\]`、`parray\[1\]`、`parray\[2\]`,然后通过循环遍历指针数组来访问指针所指向的变量。\[2\]
此外,如果要在函数中使用结构体指针,需要使用箭头运算符`->`来访问结构体中的变量。通过结构体指针可以动态分配内存,并使用`malloc()`函数来分配内存空间。需要注意的是,使用结构体指针之前要确保指针不是野指针或者NULL。可以使用`malloc()`函数来为结构体指针分配内存空间,并使用`->`来访问结构体指针所指向的结构体中的变量。\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [C语言的指针各种用法](https://blog.csdn.net/weixin_48856218/article/details/119850150)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文