C语言结构体 1

C语言结构体的程序例程和应用

#include "stdio.h"
#include "assert.h"
#define NAME_LEN 20 

/*
struct part{

}part1,part2;   //part是结构体类型, part1和part2是part型结构体声明的变量 

//新建变量时 struct part p1,p2; 


typedef struct{

}part;  //part是结构体类型 

//新建变量时 part p1,p2; 
*/



//结构变量: 当需要存储相关数据项集合时,结构是一种合理的选择
/*
声明
struct{
    int number;//编号 
    char name[NAME_LEN+1]; //名称 
    int on_hand; //现有数量 
} part1,part2 ; //建立两个这种类型的变量 

结构体变量是在内存中顺序存储的

也可以在声明的时候初始化
struct{
    int number;//编号 
    char name[NAME_LEN+1]; //名称 
    int on_hand; //现有数量 
} 
part1 = {678,"Disk drive0", 10},
part2 ={6,"Disk drive1", 17}; 

*/ 

#define N 10

struct part{
    int number;//编号 
    char name[NAME_LEN+1]; //名称 
    int on_hand; //现有数量     
};

void Example1(void);
void Example2(struct part part1);  
//结构体函数的应用  结构体做实际参数

struct part Example3(int number, const char*name, int on_hand);
//结构体返回值,此时结构体成为函数的实际参数





int main()
{
    struct part part1={2333, "zhikg", 777} ;
    Example1();
    printf("\n\nthis -------------------\n\n");
    Example2(part1); //打印part1的值 

    printf("\n\nthis -------------------\n\n"); 
    part1 = Example3(111, "zhisgk", 666); //修改 part1
    Example2(part1); //打印part1的值 





    printf("\nHello world !\n");
    return 0;
} 




//结构体例程3 返回结构体

struct part Example3(int number, const char*name, int on_hand)
{
    struct part p;
    p.number = number;
    p.on_hand=on_hand;
    strcpy(p.name,name);
    return p;
} 



//结构体例程2  构建结构体 
// 例程1中的问题是没有声明变量类型,所以在声明变量之前需要声明变量类型
/*

//----1---- 
struct part{
    int number;//编号 
    char name[NAME_LEN+1]; //名称 
    int on_hand; //现有数量   
} ; //注意后面的分号 

//也可以直接声明变量类型的结构体中初始化
//----2---- 
struct part{
    int number;//编号 
    char name[NAME_LEN+1]; //名称 
    int on_hand; //现有数量   
} 
part1 = {678,"Disk drive0", 10},
part2 ={6,"Disk drive1", 17}; 
    //注意后面的分号 
//----3---- 
struct part part1 =  {678,"Disk drive0", 10};
struct part part2;
part2 = part1; 

//作为声明结构标记的替换,还可以用typedef来定义真实的类型名 
//----4----
typedef struct{
    int number;//编号 
    char name[NAME_LEN+1]; //名称 
    int on_hand; //现有数量     
} part; //注意类型的名字出现在末尾而不是开头

part part1,part2

*/ 


void Example2(struct part part1)
{ 
    printf("Part1 number: %d\n",part1.number);
    printf("Part1 name: %s\n",part1.name);
    printf("Part1 number: %d\n",part1.on_hand);  
} 



//结构体例程1 初始化结构体 
void Example1(void)
{
    struct{
        int number;//编号 
        char name[NAME_LEN+1]; //名称 
        int on_hand; //现有数量 
    } 
    part1 = {678,"Disk drive0", 10},
    part2 ={6,"Disk drive1", 17};   

    printf("Part number: %d\n",part1.number);
    printf("Part name: %s\n",part1.name);
    printf("Part number: %d\n",part1.on_hand);

    //结构体的值的修改 
    part1.number = 666;
    part1.on_hand++;

    printf("Part number: %d\n",part1.number);
    printf("Part number: %d\n",part1.on_hand);  


    //结构体的赋值
    printf("Part number: %d\n",part2.number);
    printf("Part name: %s\n",part2.name);
    printf("Part number: %d\n",part2.on_hand);
    part2=part1; 
    printf("Part number: %d\n",part2.number);
    printf("Part name: %s\n",part2.name);
    printf("Part number: %d\n",part2.on_hand);  
} 

“`

猜你喜欢

转载自blog.csdn.net/qq_32460819/article/details/81263793
今日推荐