设有如下定义,则错误的输入语句是( )。 struct ss{ char name[10]; int age; char sex; } std[3], *p = std;
时间: 2023-05-31 21:20:16 浏览: 797
C语言变长数组 struct中char data[0]的用法详解
5星 · 资源好评率100%
### 回答1:
这是一个定义了结构体的示例代码,但是其中有一处错误的输入语句,应该是使用了英文括号而不是中文括号,正确的语句应该是:struct ss {char name[10]; int age; char sex;} std[3], *p = std;。
### 回答2:
题目中给出了一个结构体的定义,定义名为“ss”,包含了三个成员,“name”、“age”和“sex”,其中“name”为字符数组类型,大小为10,“age”为整型,“sex”为字符型。同时,题目还定义了一个包含“ss”类型元素的数组“std”,其中有3个元素。还定义了一个指向这个数组的指针“p”,并将其初始化为“std”数组的首地址。
看到这道题目,我们只需要根据这个结构体的定义来判断哪些输入语句是错误的即可。下面我将逐一分析每一个选项。
A. p++;
这个语句是正确的。它的作用是将指针p指向数组中的下一个元素。
B. std[1].name = "Tom";
这个语句是错误的。因为“name”是字符数组类型,不能直接用一个字符串来进行赋值操作。需要用strcpy函数将一个字符串复制到“name”中。
C. std[2].age = 20.5;
这个语句是错误的。因为“age”是整型,不能将一个浮点数赋值给它。
D. char sex = std.sex;
这个语句是错误的。因为std是一个数组名,不能直接用“.”操作符来访问数组中的成员。正确的语句应该是std[0].sex。
E. p->name = "Mary";
这个语句是错误的。因为“name”是字符数组类型,不能直接用一个字符串来进行赋值操作。需要用strcpy函数将一个字符串复制到“name”中。
根据上述分析,可知选择B、C、D和E中的任意一项都是错误的。因此,错误的输入语句有4个。
### 回答3:
这道题给出了一个结构体的定义和一个全局变量的声明,变量名为std,类型为ss数组类型,数组长度为3,同时还声明了一个指针变量p,指向std数组的首地址。
根据结构体的定义,ss包含三个成员,分别是char类型的name数组,int类型的age,以及char类型的sex。
错误的输入语句应该是无法通过编译或者存在语法错误。
在给出的代码中,没有发现语法错误或编译错误。因此,该题目没有明确错误的输入语句。
但是,需要注意的是,std是数组类型,因此无法通过指针方式为其赋值。
正确的赋值方式为:
```c
std[0].age = 18;
std[1].age = 19;
std[2].age = 20;
```
或者
```c
(*(std+0)).age = 18;
(*(std+1)).age = 19;
(*(std+2)).age = 20;
```
而将p指针指向std数组后,也可以通过p指针修改std数组中成员的值,如:
```c
p->age = 18;
(p+1)->age = 19;
(p+2)->age = 20;
```
阅读全文