zoukankan      html  css  js  c++  java
  • C语言_了解下结构体指针

    在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	%d	%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	%d	%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 
    ",index+1);
            printf("薪资:%d
    ", pProgrammer->salary);
            printf("经验-年:%d
    ", pProgrammer->experience);
            printf("岗位:%s
    ", pProgrammer->type);
        }
         printf("pProgrammer:%d
    &student[2]:%d
    ",pProgrammer,&programmer[3]);        
        return 0;
    }

  • 相关阅读:
    C语言:链表实现的一个实例
    第二次作业——C++学习
    第二次作业———“A+B Format”思路与总结
    hdu 2962 Trucking (二分+最短路Spfa)
    hdu 2680 Choose the best route (dijkstra算法 最短路问题)
    hdu 1233 还是畅通工程 (最小生成树)
    poj 2253 Frogger (dijkstra最短路)
    poj 1062 昂贵的聘礼 (dijkstra最短路)
    hdu 2066 一个人的旅行
    poj 2387 Til the Cows Come Home(dijkstra算法)
  • 原文地址:https://www.cnblogs.com/wt645631686/p/8184309.html
Copyright © 2011-2022 走看看