********************* 结构体 *********************

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------



//  结构体的作用域


 变量的作用域

 

 1> 全局变量 (从定义位置开始到文件结尾)

 

 

 2> 局部变量 (从定义的位置开始,到他所在的代码块或者函数结束括号的'}',)

 

 

 结构体的作用域

 

 结构体的作用域和变量一样:分为全局结构体,局部结构体

 

 */

#include <stdio.h>


//全局的结构体


struct Person{

    

    int age;

    char *name;//指针变量名是变量,可以改变指向

    int idCard;

    

};//不要忘记此处的分号



void test(){

    

    //定义一个结构体变量

    

    struct Person p1;

    

    p1.name ="张闪粉";

    p1.age = 18;

    p1.idCard = 438;

    

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

}


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

    // insert code here...

    

    

    struct Person p1;

    p1.name="张二";

    p1.age = 12;

    p1.idCard=20;

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

    

    

    test();

    {

    //定义一个局部结构体

    //局部结构体把全局结构体给暂时屏蔽了

    

    struct Person{

        int age;

    };

    }

    //定义一个结构体变量

    struct Person p2;


    p2.age = 18;

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

    return 0;

}




//  结构体变量占用空间大小

//

//  Created by 李佳乐 on 15-3-20.

//  Copyright (c) 2015 李佳乐. All rights reserved.

//


#include <stdio.h>


void test(){

    

    struct A{

        

        char ch;        //1

        short num;      //2

        int a;          //4

        int b;          //4

    

}a1;


struct B{

    

    char name[7];

    char str[4];

    int a;

}b1;


//计算结构体如果非配内存占用多少字节



int len = sizeof(b1);


printf("ch     = %p\n",&a1.ch);

printf("num    = %p\n",&a1.num);

    

    printf("len = %d\n",len);

}

//结构体对齐:


//对齐的模数:默认结构体中基本数据类型中占用存储空间最大的那个


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


#pragma pack(4)

    // 手动的指定对齐模数

    

    struct A{

        

        short n[2];

        char c[2];

    }a1;

    test();

    int len = sizeof(a1);

    printf("len = %d\n",len);

    

    return 0;

}






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值