我是C语言的初学者,在学习结构体的时候发现了一个和书籍和网上资料不符的地方。根据我在网上找到的资料,点(.)是用于结构体变量访问成员,箭头(->)是用于结构体指针访问成员。
在调用结构体TS中的Num变量时,因为我并未使用指针变量,理论上应该是“TS.Num”,但是在编译的过程中,编译器会自动将其转化为“TS->Num”,而且转化后能顺利识别运行,而如果强行将其改成点则会出现无法编译的问题。我想确认这种差异究竟是因为编译环境的影响,还是因为我忽略了什么因素?
下面是我测试用的代码,我使用的系统是64位Windows7,使用的编译器是Visual Studio 2019。
#include<stdio.h>
#include<math.h>
#include"Mine.h"
struct Data
{
int Num;
char Name[20];
char Sex;
};
int main(void)
{
int i;
struct Data test;
struct Data TS[10];
test.Num = 10;
TS->Num = 20;
printf("%d,%d\n", test.Num, TS->Num);
}