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/t%d/t%s",p_s->age, p_s->height, p_s->name); //等价于 (*p_s).age  (*p_s)表示p_s指向的结构体变量  
    return 0; 
}

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

再看一个案例:

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

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

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

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

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

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17132.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论