结构体成员的访问,用指针或直接变量 区别,求解惑
如题,主要疑问在注释里
typedef struct _student
{
int num;
char name[2];
}student;
student s;
student * stu =&s;
stu->num = 12;//是否等价于 s.num,为何 s->num是错的
[解决办法]
是否等价于 s.num 等价
student s s是对象
student * stu stu是指针
[解决办法]
是一样的吧,
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef unsigned int TUInt;
typedef struct studentInfo
{
char m_name[10];
TUInt m_age;
}TStudent;
void print(TStudent s)
{
printf("%s, %d \n", s.m_name, s.m_age);
return;
}
int main(void)
{
TStudent* pStudent = NULL;
TStudent s;
strcpy(s.m_name,"zenghai");
s.m_age = 18;
print(s);
pStudent = &s;
strcpy(pStudent->m_name, "zengge");
pStudent->m_age = 20;
print(*pStudent);
getchar();
return 0;
}
[解决办法]
我多说几句吧,对于struct来说默认的字段是public的。所以你没有声明public或是private,protected等,那两个字段都是public的,student s;这是一个结构体对象,student *stu;这是一个结构体对象指针。关于对象与对象指针访问结构体字段的区别是语法,这是规定,掌握即可,没什么原因。至于访问区别LS的都说完了