#include <stdio.h>
#include <stdlib.h>
//1.如果用结构体指针,就不能用点运算符访问结构体中的变量 要用->
//2.指针要注意是否是野指针或NULL
struct student//结构体空间是132字节
{
int score;//4字节
char name[128];//128字节
};
int main()
{
struct student stu1;
stu1.score = 100;
strcpy(stu1.name,"中投");
printf("名字: %s,分数: %d\n",stu1.name,stu1.score);
struct student *p;//野指针
//p.score = 100;//如果用结构体指针,就不能用点运算符访问结构体中的变量 要用->
p = (struct student *)malloc(sizeof(struct student));//开辟空间
p->score = 100;
strcpy(p->name,"哈哈");
printf("名字: %s,分数: %d\n",p->name,p->score);
free(p);
p = &stu1;//指针是存放地址的变量,之前23行是指向malloc的那块空间,现在指针变量是存放的是stu1的地址
printf("名字: %s,分数: %d\n",p->name,p->score);
printf("地址是: %p\n",p++);//p
printf("加加后地址是: %p\n",p);//++p
system("pause");
return 0;
}
运行结果: