首页 > 其他分享 >C语言结构体

C语言结构体

时间:2024-10-09 18:50:09浏览次数:13  
标签:name students age struct C语言 int Student 结构

1.结构体的定义、初始化、打印输出

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

struct Student{                   // 定义结构体 Student

    char name[30];
    int age;
    float gpa;

};                               //记得定义结构体也是一个语句,需要加;


int main(int argc,char* argv[])
{
    
    struct Student students[3];  // 定义结构体数组 ,也可以在定义时直接初始化,


    //初始化
    strcpy(students[0].name,"zhangsan");
    students[0].age = 20; 
    students[0].gpa = 3.5;

    strcpy(students[1].name,"lisi");
    students[1].age = 21; 
    students[1].gpa = 3.7;

    strcpy(students[2].name,"wangwu");
    students[2].age = 22; 
    students[2].gpa = 3.9;

    for(int i = 0; i < 3; i++){                // 循环打印输出,直接获取值。
        printf("Name: %s Age: %d GPA: %f         
               \n",students[i].name,students[i].age,students[i].gpa); 
    }   

    return 0;
}

输出结果:

2.使用malloc动态分配内存

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

struct Student{                 // 定义结构体

    char name[50];
    int age;
    float gpa;
};


int main(int argc,char* argv[])
{
    int n;
    printf("Enter the number of students:");    // 获取数量
    scanf("%d",&n);

    // 动态分配内存
    struct Student *students = (struct Student*)malloc(n * sizeof(struct Student));
    if(students == NULL){
        printf("Memory allocation failed\n");
        return 1;
    }   

    // 初始化
    for(int i = 0;i < n;i++){
        printf("Enter name,age,and GPA for student:\n",i+1);
        scanf("%s %d %f",&students[i].name,&students[i].age,&students[i].gpa);
    }   
    // 输出
    for(int i = 0;i < n;i++){
        printf("Name : %s Age: %d GPA: %f\n",students[i].name,students[i].age,students[i].gpa);                                                            
     
    }   
    
    // 释放内存
    free(students);
    
      return 0;
}

结果为:

3.结构体数组作为参数传入函数

#include <stdio.h>


struct Student{              // 定义结构体
    char name[50];
    int age;
    float gpa;


};

printStudent(struct Student *students,int n);      //声明函数

int main(int argc,char* argv[])
{
    struct Student students[3] = {        // 初始化结构体数组
        {"zhangsan",28,3.1},
        {"lisi",21,3.4},
        {"wangwu",20,3.5}
    };  

    printStudent(students,3);            // 调用函数,并且传入结构体数组和长度

    return 0;
}




int  printStudent(struct Student *students,int n){       // 定义函数,
    for(int i = 0; i < n;i++){
        printf("name: %s ,age: %d,GPA: %f\n",students[i].name,students[i].age,students[i].gpa);                                                            

    }   


}

4.多维指针数组的访问

#include <stdio.h>

struct Student{ 
    char name[50];
    int age;
    float gpa;
};



int main(int argc,const char* argv[])
{
    // 初始化
    struct Student students[3][2] = {            // 对多维结构体指针初始化
        {{"zhanngsan",18,3.2},{"zhangwu",19,3.3}},
        {{"lisi",26,3.2},{"liwu",21,3.8}},
        {{"wangwu",27,3.0},{"wangliu",25,3.9}}
    };  

    for(int i = 0;i < 3;i++)         // 循环打印输出
        for(int j = 0;j < 2;j++)
            printf("name: %s,age: %d,GPA:%f\n",students[i][j].name,students[i][j].age,students[i][j].gpa);
    


      return 0;
}                                                                                                                                                          

结果为:

5.使用结构体指针访问结构体

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

// 定义一个结构体
struct Person {
    char name[50];
    int age;
    float height;
};

int main() {
    struct Person person1;  // 定义一个结构体变量
    struct Person *ptr;     // 定义一个结构体指针
    

    // 给结构体变量赋值
    strcpy(person1.name, "张三");
    person1.age = 25;
    person1.height = 170;

    // 将指针指向结构体变量的地址
    ptr = &person1;

    / 使用指针访问结构体成员
    printf("Using pointer:\n");
    printf("Name: %s\n", ptr->name);    // 使用 -> 运算符访问结构体成员
    printf("Age: %d\n", ptr->age);      /
    printf("Height: %.1f\n", ptr->height);

    return 0;
}

标签:name,students,age,struct,C语言,int,Student,结构
From: https://blog.csdn.net/qq_61958489/article/details/142793631

相关文章

  • C语言—函数递归
    目录一.递归的概念①递归的思想②递归的限制条件二.递归的一些典型例子①求n的阶乘②顺序打印一个整数的每一位③斐波那契数列三.递归与迭代一.递归的概念①递归的思想所谓递归,就是把一个大型复杂问题不断转化成一个个规模较小的子问题从而求解,直到子问题不能被......
  • 【数据结构与算法】排序算法
    3.7排序算法概述比较排序算法算法最好最坏平均空间稳定思想注意事项冒泡O(n)O(n2n^2......
  • 销售团队管理全面指南:从结构到流程
    “除非卖出东西,否则就不能叫生意。”——ThomasWatson的这段话表明,无论您经营哪个行业,销售都应该成为企业最重要的部分。您可能拥有出色的产品,但真正重要的是如何销售它。为此,您需要一支出色的销售团队,并让他们在一个良好的管理体系(流程体系)下发挥作用。一、销售团队结构销售......
  • 2024年软件设计师中级(软考中级)详细笔记【3】数据结构(下)(分值5分)
    上午题第3章数据结构下部目录前言第3章数据结构【下】(5分)3.5查找3.5.1查找的基本概念【考点】3.5.2静态查找表的查找方法3.5.3动态查找表3.5.4哈希表3.5.4.1哈希表的定义3.5.4.2哈希函数的构造方法3.5.4.3处理冲突的方法3.6排序3.6.1排序的基本概念3.6.2......
  • C语言练习
    今天继续我们的练习。1.调用printf编写一段程序,显示以下内容天地人分析:1.这次题目非常简单,我们只需要知道printf的使用方法(不知道的同学可以看前面我以往发布过的C语言的知识点),并多次打印就可以实现我们想要的效果。实际代码:#include<stdio.h>//头文件intmain()//主......
  • C语言练习
    接下来一段时间,博主要参加军训没有时间更新C语言知识点,但博主会每天更新一道C语言的题作为分享。1.计算并显示整数的差分析:1.题目并不难,首先我们要知道printf这个库函数,是用来打印数据到屏幕的库函数      2.设置变量,在遵循计算机计算的规则(其实和正常的加减乘除......
  • Day12-if选择结构
    Day12-if选择结构if单选择结构我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示语法:if(布尔表达式){//如果布尔表达式为true将执行的语句}实例:判断输入的字符串是不是HelloScannerscanner=newScanner(System.in);......
  • 刷c语言练习题5(牛客网)
    1、若有定义inta[8];,则以下表达式中不能代表数组元素a[1]的地址的是()A、&a[0]+1B、&a[1]C、&a[0]++D、a+1答案:C解析:C选项中&a[0]是一个地址常量,对地址常量的赋值操作是不合法的,错误。2、 以下函数值的类型是:fun(floatx){floaty;y=3*x-4;returny;}A、i......
  • C语言 实现 unix时间戳转换到自定义 tm结构体
    之前使用ESP32写了一个闹钟,免得我老是把手机闹钟给滑了就不知该起床了原本想用标准库解决的,但是这个时间一直不准,逼得用SNTP获取了步进单位为(second)的时间戳,然后使用GPtimer来维持时间戳才算是把精准计时给解决了废话不多说,直接上代码typedefstruct{intyear;......
  • 【C语言小型项目实践】:初学者到中级水平的计算器项目
    目录一、计算器项目1.1.功能描述1.2.技术要点 二、代码实现2.1.代码说明2.2.注意事项 三、测试用例3.1.基本运算3.2.括号与优先级3.3.多个运算符3.4.更复杂的表达式3.5.错误情况2.6.带负数的运算2.7.混合情况一、计算器项目1.1.功能描述此......