c语言中结构类型与结构变量,c语言中 结构变量,结构类型标示,结构类型定义的区别...

这篇博客深入介绍了C语言中的结构体类型,包括结构体的声明、初始化、作为参数传递和作为返回值使用。同时,展示了如何将结构体与数组结合,以及结构体在内存中的表示和操作。通过示例代码,详细解释了如何定义和操作结构体变量,如Person和NewPerson,并演示了结构体在函数调用中的应用。
摘要由CSDN通过智能技术生成

//

// main.c

// StructDemo2

//

// Created by 千 on 16/7/20.

// Copyright © 2016年 kodulf. All rights reserved.

//

#include //之前讲的是结构变量,现在讲结构标示

//2.结构类型-结构标示

/*

就有点像是java中的class

public Class Person{

int pid;

String name;

int age;

}

*/

struct Person{

int pid;

char name[10];

int age;

}p2,p3={1,"hello",3};//注意这了是有;的符号的,而且可以在这里进行初始化和申明

//结构类型-标记

struct NewPerson{

int pid;

char name[10];

int age;

};

//结构类型作为参数

void printPerson(struct NewPerson p){

printf("pid=%d\n",p.pid);

printf("name=%s\n",p.name);

printf("age=%d\n",p.age);

printf("+++++++++++\n");

}

//结构类型作为返回值

struct NewPerson getPerson(){

struct NewPerson p2;

p2.pid=0;

strcpy(p2.name,"p2 name");

p2.age=90;

return p2;

};

int main(int argc, const char * argv[]) {

// insert code here...

printf("Hello, World!\n");

struct Person p1;//名称为person的结构体类型

p1.pid = 1;

strcpy(p1.name,"hello");//注意这个字符串的肤质不能使用p1.name ="hello";

p1.age=29;

printf("pid=%d,name=%s,age=%d\n",p1.pid,p1.name,p1.age);

//3:改进,成为结构类型定义,通过类型定义的方式,实现和java非常类似的

typedef int BOOL; //这样bool 就代表int类型了

typedef struct{

int pid;

char name[10];

int age;

} Customer;

Customer c1;

c1.pid = 9;

strcpy(c1.name,"customer");

c1.age=9;

printf("pid=%d,name=%s,age=%d\n",c1.pid,c1.name,c1.age);

//测试结构类型作为参数和返回值

struct NewPerson np1;

np1.pid = 90;

strcpy(np1.name, "new person");

np1.age = 29;

printf("开始输出new person\n");

printPerson(np1);

//结构体,

struct NewPerson np2 = getPerson();//结构体是可以直接等号来复制的

printPerson(np2);

//4.结构体和数组

struct MyPoint{

int x;

int y;

};//注意了一定不能少了这个分号

struct MyCircle{

struct MyPoint center;//圆心

double r;//半径

};//注意了一定不能少了这个分号

struct MyPoint mp ;

mp.x=10;

mp.y=10;

struct MyCircle circle;

circle.center=mp;

circle.r=1.2f;

printf("圆心的坐标是x=%d,y=%d,r=%f\n",circle.center.x,circle.center.y,circle.r);

//结构类型和数组

//首先结构体里面可以有数组,

struct StructDemo{

int pid;

char name[10];

int age;

};

//数组的类型也可以是结构体类型的

struct NewPerson persons[4];

struct NewPerson person1,person2,person3,person4;

person1.age=1;

strcpy(person1.name, "person1");

person1.pid = 1;

persons[0]=person1;

person2.age=2;

strcpy(person2.name, "person2");

person2.pid = 2;

persons[1]=person2;

person3.age=3;

strcpy(person3.name, "person3");

person3.pid = 3;

persons[2]=person3;

person4.age=4;

strcpy(person4.name, "person4");

person4.pid = 4;

persons[3]=person4;

for(int i=0;i<4;i++){

printPerson(persons[i]);

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值