当我执行以下代码时,我收到此行scanf("%s",A.(T+i)->CNE)
的错误消息
错误消息:expected identifier before '(' token|
我能知道是什么问题吗?提前致谢。
typedef struct date
{
int day;
int month;
int year;
}date;
typedef struct Student
{
char CNE[10];
char FirstName[30];
char LastName[30];
date BD;
float Grades[6];
}Student;
typedef struct Class
{
Student T[1500];
int dim;
}Class;
Class input(Class A)
{
int i=A.dim;
printf("Enter the student CNE : ");
scanf("%s",A.(T+i)->CNE);
}
最佳答案
.
运算符之后唯一可以使用的是成员名称。它不能是诸如(T+i)
的表达式。
通常,要访问成员i
的元素T
,将使用A.T[i]
,然后其CNE
成员将是A.T[i].CNE
。
大概您一直在研究指针算法,并且对使用指针访问A.T[i]
感兴趣。在这种情况下,A.T + i
将给出i
的元素A.T
的地址。然后(A.T + i)->CNE
将成为该元素的CNE
成员。 (观察到A.T
是一个数组,但是在此表达式中,它会自动转换为指向其第一个元素的指针。因此A.T + i
等效于&A.T[0] + i
,后者表示接受A.T[0]
的地址并通过i
元素将其前进。)