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;
    }

  • 相关阅读:
    eclipse internal web browser 不可用在linux下的解决
    Asp.Net MVC4入门指南(10):第三方控件Studio for ASP.NET Wijmo MVC4 工具应用
    生成树计数MatrixTree定理
    strcpy与strncpy
    [置顶] 游戏开发技术总结(经典之作)第七集 广阔天地游戏大地图的形成方法的地图移动
    Inside COM接口
    UTC时区表(.Net)
    java练习
    如果Imageview与Linearlayout有叠加且可选资源长度不同,如何布局?
    【Android测试】Android抓包解析全过程
  • 原文地址:https://www.cnblogs.com/wt645631686/p/8184309.html
Copyright © 2011-2022 走看看