c语言结构第一部分

0: Object-c 和c的区别
0:object-c 是完全的面向对象的,c是面向过程的
1:object-c 是在c的基础之上, object-c上面写一个c语言程序是完全可以跑起来的
2:oc 里面有类的概念,c语言里面有类似的叫做结构


1: 什么是结构,联合,枚举
结构变量
结构类型
数组和结构的嵌套

什么是结构,
结构也是一种变量,是一种复合变量,结构的英文是structure,缩写是struct,结构是可以保存多个不同类型(这些类型为结构的成员member)的集合变量,例如:保存一个人的信息,id,name,age,email等
注意结构和数组的不同就是,结构里面是不同的类型的,数组是相同的类型的。

什么是联合?
联合的目的是节省存储空间,多个成员共享同一快怒出,每次只能存储一个成员,无法存储全部成员。
只要记住一点就是为了节省存储空间

什么是枚举?
枚举是一组关联的整形常量值,例如在一个游戏软件里面可以定义UP,DOWN,LEFT,RIGHT代表四个方向




2:结构变量-结构和数组的区别:
1:数组的元素类型都是相同的,而且可以通过为止来获取起元素值
2:结构中的元素都是不相同的,不能通过为止获取其元素值,可以通过名称获得
3:目的不通,数组是保存多个相同类型值的集合,结构是定义一种相关联的负荷数据类型


结构变量-结构变量的神明:
//复合类型,结构变量的声明
    struct{
        int pid;
        char name[10];
        int age;
    } p1,p2;



结构变量的初始化:
//结构变量初始化
    struct{
        int cid;
        char name[10];
        int age;
    } customer1={1,"kodulf",10};


初始化会有一个默认值,可以进行部分的初始化

如何访问结构成员呢?
//结构变量初始化
    struct{
        int cid;
        char name[10];
        int age;
    } customer1={1,"kodulf",10};
    
    //访问成员变量
    printf("cid = %d\n",customer1.cid);
    printf("name=%s\n",customer1.name);
    printf("age=%d\n",customer1.age);


修改成员变量,特别要注意字符串的修改,还是要通过sring的方法来做

//修改成员变量:
    customer1.cid=2;
    //name需要通过字符串的拷贝的方法来做,如果直接赋值会报错的
    //customer1.name="hello";如果直接赋值会报错的
    //注意是包含<string.h>
    strcpy(customer1.name,"TOM");
    printf("cid = %d\n",customer1.cid);
    printf("name=%s\n",customer1.name);
    printf("age=%d\n",customer1.age);



结构变量-结构成员的操作:
和数组不通,结构可以通过等号(=)进行复制,例如
c2=c1;
//结构变量初始化
    struct{
        int cid;
        char name[10];
        int age;
    } customer1={1,"kodulf",10},customer2;


//和数组不通,结构可以通过等号(=)进行复制,例如
    customer2=customer1;
    printf("cid = %d\n",customer2.cid);
    printf("name=%s\n",customer2.name);
    printf("age=%d\n",customer2.age);



结构类型-结构变量的问题:
如果程序的多个地方要使用相同类型的结构变量,那就需要定义多次,这样给程序带来荣誉,
+++++++++++++++
之前讲到的是结构变量,现在讲解的是结构类型-结构标记的声明
+++++++++++
结构标记的声明;
struct person{



//
//  main.c
//  StructTest
//
//  Created by 千 on 16/7/19.
//  Copyright © 2016年 kodulf. All rights reserved.
//

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

void func1(){
    struct{
        int pid;
        char name[10];
        int age;
    }p1;
}

void func2(){
    struct{
        int pid;
        char name[10];
        int age;
    }p1;
}

struct Person{
    int pid;
    char name[20];
    int age;
};

int main(int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");
    //结构变量
    int age;
    double d;
    char c;
    
    //复合类型,结构变量的声明
    struct{
        int pid;
        char name[10];
        int age;
    } p1,p2;
    
    //片警,可以用来形容局部变量作用域,这个老郭太6了
    //两个结构,有自己的命名空间,不会相互印象的
    struct{
        int cid;
        char name[10];
        int age;
    } c1;
    
    //结构变量初始化
    struct{
        int cid;
        char name[10];
        int age;
    } customer1={1,"kodulf",10},customer2;
    
    //访问成员变量
    printf("cid = %d\n",customer1.cid);
    printf("name=%s\n",customer1.name);
    printf("age=%d\n",customer1.age);

    
    //修改成员变量:
    customer1.cid=2;
    //name需要通过字符串的拷贝的方法来做,如果直接赋值会报错的
    //customer1.name="hello";如果直接赋值会报错的
    //注意是包含<string.h>
    strcpy(customer1.name,"TOM");
    printf("cid = %d\n",customer1.cid);
    printf("name=%s\n",customer1.name);
    printf("age=%d\n",customer1.age);
    
    
    //和数组不通,结构可以通过等号(=)进行复制,例如
    customer2=customer1;
    printf("cid = %d\n",customer2.cid);
    printf("name=%s\n",customer2.name);
    printf("age=%d\n",customer2.age);
    
    
    //结构类型-结构标记,这个和java 中的类差不多
    struct Person p1;
    //注意上面不能够少了struct ,因为单纯的Person不是一种类型
    
    return 0;
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值