您的位置:首页 > 编程语言 > C语言/C++

C语言_了解下结构体指针

2018-01-03 16:15 274 查看
在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型。当然也可以指向结构体,先看一个小案例:

#include <stdio.h>
#include <string.h>
typedef struct PERSON {
int age;
int height;
char name[15];
} Person;
int main (){
Person p = {28, 178, "phper"};  //别名
Person *p_s = &p;                //定义结构体指针
printf("%d\t%d\t%s",p_s->age, p_s->height, p_s->name); //等价于 (*p_s).age  (*p_s)表示p_s指向的结构体变量
return 0;
}




再看一个案例:

#include <stdio.h>
#include <string.h>
#include <malloc.h>
typedef struct PERSON {
int age;
int height;
char name[15];
} Person;
int main (){

Person *p_s = (Person *)malloc(sizeof(Person));      //计算结构体Person大小,并分配相应的内存空间,也可以传参(struct PERSON),再强制转化指针格式
memset(p_s, 0, sizeof(Person));  //分配好空间内容是随机的,用函数初始化全部清空为0

//指针指向的是p_s的首地址
printf("请输入年龄:");
scanf("%d", &p_s->age);
printf("请输入身高:");
scanf("%d", &p_s->height);
printf("请输入名字:");
scanf("%s", p_s->name);
printf("%d\t%d\t%s",p_s->age, p_s->height, p_s->name); //等价于 (*p_s).age  (*p_s)表示p_s指向的结构体变量
return 0;
}




指向数组结构体的指针案例:

# include <stdio.h>
# include <stdlib.h>
# include <string.h>

//创建一个结构体
struct Programmer
{
int salary;
int experience;
char type[15];

}programmer[3]=
{
{18000, 3, "PHP"},
{15000, 1, "GO"},
{19000, 3, "JAVA"},
};

int main ()
{
struct Programmer *pProgrammer;
int index;
pProgrammer = programmer;
for(index=0; index<3; index++,pProgrammer++) //index++后面还有一句控制着指针的移动,循环完一次,指针将指向下一个地址中的成员
{
printf("编号%d \n",index+1);
printf("薪资:%d\n", pProgrammer->salary);
printf("经验-年:%d\n", pProgrammer->experience);
printf("岗位:%s\n", pProgrammer->type);
}
printf("pProgrammer:%d\n&student[2]:%d\n",pProgrammer,&programmer[3]);
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: