(*pStu).age = 10;\n\tpStu->score = 66.5;\n\tstrcpy(pStu->name, \"南森\"); \n为什么不同
时间: 2023-09-25 21:09:51 浏览: 41
这是因为第一行使用的是指针的解引用操作(*),将指针pStu指向的结构体变量的age成员赋值为10,第二行使用箭头操作符(->),直接给指针pStu指向的结构体变量的score成员赋值为66.5,第三行使用strcpy函数将字符串“南森”复制到指针pStu指向的结构体变量的name成员中,这是两种不同的操作方式。
相关问题
struct Student { char name[20]; int age; float score; };struct Student *pStu = &stu;&stu是否代表结构体首地址?
不是的。在代码中没有定义变量 `stu`,所以不可能使用 `&stu` 来代表结构体的首地址。正确的写法应该是先定义一个 `struct Student` 类型的变量,再将该变量的地址赋值给指针变量 `pStu`。例如:
```
struct Student stu = {"Tom", 18, 90.5};
struct Student *pStu = &stu;
```
其中 `&stu` 表示变量 `stu` 的地址,也即结构体首地址。这个地址被赋值给指针变量 `pStu`,使得 `pStu` 指向了结构体变量 `stu`。
语言C中怎么使->的类型声明承认
C语言中的箭头运算符->用于访问结构体和联合体中的成员,它是一个指针运算符,用于将指向结构体或联合体的指针和成员名结合起来访问对应的成员。
指针的类型声明包括指针所指向的变量类型和指针本身的类型(即指针变量的类型)。对于指向结构体或联合体的指针,由于它们的成员是通过箭头运算符->访问的,因此指针变量的类型必须是结构体指针类型或联合体指针类型。
例如,假设有以下结构体定义:
```
struct Student {
char name[20];
int age;
float score;
};
```
那么定义一个指向该结构体类型的指针变量,可以使用如下语句:
```
struct Student *pStu;
```
如果要访问指针所指向的结构体变量的成员,可以使用箭头运算符->,例如:
```
pStu->age = 18;
```
在使用箭头运算符->时,编译器会自动判断指针变量的类型,因此不需要特别声明或指定箭头运算符的类型。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)