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

  • 相关阅读:
    动态设置ImageView的大小
    URI和URL、URN的区别
    关于Android中的异步任务
    Android下如何理解onMeasure,onLayout的过程
    Android如何获取同包名应用的图标及名称
    Android4.0 监听 android 手机情景模式(有声、静音、振动)
    Android中裁剪一张图片
    Json解析国家气象局天气API
    Android中AnimationDrawable的使用
    POJ
  • 原文地址:https://www.cnblogs.com/wt645631686/p/8184309.html
Copyright © 2011-2022 走看看