假设结构指针p已定义并正确赋值,其指向的结构变量有一个成员是int型的num,则语句 *p.num = 100; 是正确的。
时间: 2023-05-31 15:20:52 浏览: 418
### 回答1:
是的,语句 *p.num = 100; 是正确的。因为p是一个结构指针,使用 *p 可以访问指向的结构变量,而 num 是结构变量的一个成员,可以通过 . 或 -> 运算符访问。所以 *p.num 就是访问结构变量中的 num 成员,将其赋值为 100 是正确的。
### 回答2:
首先,需要了解指针和结构体的相关概念。
指针是一个变量,其值为存储在内存中另一个变量的地址。结构体是C语言中的一种复合数据类型,可以存储不同类型的数据。
假设结构指针p已定义并正确赋值,其指向的结构变量有一个成员是int型的num。p指向的是结构体变量的地址,而不是具体的变量。因此,在访问结构体成员时,需要使用箭头符号(->)来表示指针所指向的结构体变量。
语句 *p.num = 100; 的意思是将结构体变量中的num成员的值改为100。但这种方法是错误的,因为指针p并不指向num变量本身,而是指向整个结构体变量的地址。
正确的方法应该是使用箭头符号指向num成员,即p->num = 100;。这样会把结构体变量中的num成员的值改为100。
综上所述,语句*p.num = 100;是错误的,应该改为p->num = 100;才能正确修改结构体变量的成员值。
### 回答3:
结构指针p已定义并正确赋值,其指向的结构变量有一个成员是int型的num,因此*p的效果等同于使用点运算符访问结构体的成员变量。 因此,如果您使用*p.num = 100;,则会发生编译时错误,因为*p是指针,不是结构体。相反,应该使用(*p).num = 100;或p->num = 100;。这是因为*p是间接引用指针,返回的是指针所指向的值,而每个成员都是一个数据类型,实际上它不能被解释为指针类型(除非成员是指针)。 正确的语句应为:(*p).num = 100;或p->num = 100;,这将把p所指向的结构变量中的num成员设置为100。 这两种方法具有相同的结果,但箭头运算符更容易理解和编写,使用它可以使代码更简洁和易读。