我看你操作指针时有时使用* 有时使用& 有时使用-> 这些个符号都是什么意思?能举例子吗
时间: 2024-11-04 17:14:20 浏览: 20
在C语言中,指针是一种非常重要的数据类型,它们用于存储变量的内存地址。你提到的`*`, `&`, 和 `->` 是三个与指针相关的运算符:
1. `*`: 指针解引用(dereference)运算符
当你在指针前加上`*`时,你会得到该指针所指向的数据值。例如:
```c
int num = 10;
int *p = # // p现在指向num的地址
printf("The value at the address pointed by p is: %d\n", *p); // 输出: The value at the address pointed by p is: 10
```
这里,`*p`实际上是访问了存储在`num`中的值。
2. `&`: 取址运算符 (address-of)
`&`返回的是一个表达式的地址,常用来获取变量或对象的内存地址以便于传递给指针。比如:
```c
int x = 5;
int *ptr = &x; // ptr现在指向x的地址
```
3. `->`: 结构体/类成员访问运算符 (pointer-to-member dereference)
如果指针是指向结构体或类的成员的,你需要使用`->`来访问那些成员。例如:
```c
struct Student {
char name[20];
int age;
};
struct Student student;
Student *s_ptr = &student;
s_ptr->name; // 访问student的名字
s_ptr->age; // 访问student的年龄
```
这里,`s_ptr->name`表示通过`s_ptr`间接访问结构体`Student`的`name`成员。
简单来说:
- `*`用于从指针中取出实际值;
- `&`用于获取变量的地址;
- `->`用于在嵌套结构体中导航到特定的成员。
阅读全文