c语言结构体学习笔记

//

//  main.m

//  CLesson_06_1

//

//  Created by ly on 15/10/14.

//  Copyright (c) 2015 ly. All rights reserved.

//


#import <Foundation/Foundation.h>


#pragma mark 结构体声明

/*

 //什么是结构体

 1.结构体是一种构造类型,有基本数据类型组合而成的一种新类型,与数组的区别:构成结构体的基本数据类型可以不相同,数组必须是同类型的数据构成

 2.结构体必须先声明,声明这个结构体由那些数据类型构成的,相当于基本数据类型的“intchardouble之类的类型说明。  声明完成后就在文件中创造出了这种新的数据类型,就可以使用这种新类型定义变量来保存数据。

 */



//声明一个结构体类型,由两个整型数组成,一个叫x表示x轴坐标,另一个叫y表示y轴坐标

struct zuoBiao {

    //成员变量

    int x;//第一个成员变量,变量的类型是整型,变量的名字是x

    int y;//第二个成员变量,变量的类型是整型,变量的名字是y

};


//匿名结构体:没有名字的结构体,在结构体名的位置,只有一个空格

struct

{

    float a;

    float b;

}noName = {12.30, 45.78}, noName1 = {36.12,78.94};//因为匿名结构体没有结构体名,所以在main或其他自定义函数中无法获取到这种类型的结构体,如果想使用,必须在声明完成后马上创建这种类型的变量


//声明一个结构体类型,名字叫:student 成员变量有:nameagegender

struct student

{

    char name[20];

    int age;

    char gender;

};




#pragma mark typedef


//一般我们可以使用typedef将较长的结构体类型修饰符,替换为另一个名字

typedef struct student student;


//typedef的另一种用法:在声明结构体类型的同时,找一个新名字来代替

typedef struct teacher{

    char name[20];

    int age;

}Teacher;



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



    

#pragma mark 定义结构体类型的变量

    /*

    //定义一个“zuoBiao”类型的结构体变量。

    //struct zuoBiao,使用struct关键字 + 结构体名,共同组成了变量的类型修饰符

    //结构体变量赋值方法和数组赋值方法一样,用{}将成员变量的值包裹起来,使用‘,’分隔开各个值。

    struct zuoBiao point1 = {12, 15};

    

    //访问结构体变量的值:point1.x 使用结构体变量名 + “.” + “成员变量名的方式访问。

    printf("point1.x = %d point1.y = %d\n", point1.x, point1.y);

    

    //修改point1x99y88,先访问到对应得成员变量,然后修改值。

    point1.x = 99;

    point1.y = 88;

    printf("point1.x = %d point1.y = %d\n", point1.x, point1.y);

    

    struct zuoBiao point2 = {18, 17};

    printf("point2.x = %d point2.y = %d\n", point2.x, point2.y);

    

    //结构体变量之间可以整体赋值,但是数组不行

    struct zuoBiao point3 = point2;

    printf("point3.x = %d point3.y = %d\n", point3.x, point3.y);

    

    printf("noName.a = %.2f noName.b = %.2f\n",noName.a,noName.b);

     */

    

    //定义一个student类型的结构体变量

    struct student stu1 = {"zhangSan", 18, 'm'};

    student stu2 = {"xiaoHong", 20, 'w'};

    

    //打印stu1的年龄

    printf("%s的年龄是:%d\n",stu1.name, stu1.age);

    

    //修改stu1的年龄

    stu1.age = 21;

    printf("%s的年龄是:%d\n",stu1.name, stu1.age);

    

    //修改nameshuKui

    //因为字符串在C语言中是使用字符串数组类型保存的,数组不能整体赋值,所以使用普通的修改成员变量方法在这里无效,需要使用字符串拷贝函数,达到修改目的。

    strcpy(stu1.name, "shuKui");

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


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

    

    return 0;

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值