首页 > 编程语言 > 详细

c语言中结构体的定义、初始化及内存分配

时间:2015-02-10 22:52:35      阅读:215      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>

struct person
{
    char *name;
    int age;
};

int main()
{
    
    //结构体可以定义在函数内,也可以定义到函数外
    //相当于全局变量与局部变量
    
//    struct person
//    {
//        char *name;
//        int age;
//    };
    
    struct person p1;
    
    //补齐算法,分配的存储空间为结构体中占用内存最大成员所占用内存的整数倍
    //person结构体中占用内存最大的成员为指针,占用8个字节,
    //另一个成员int占用4个内存,
    //所以结构体person所定义变量占用的内存为16字节
    printf("sizeof(p1)=%lu\n",sizeof(p1));
    
    p1.name = "jack";
    p1.age = 18;
    
    printf("p1.name = %s\n",p1.name);
    printf("p1.age = %d\n",p1.age);
    
    
    struct person p2 = {"rose",20};
    
    printf("p2.name = %s\n",p2.name);
    printf("p2.age = %d\n",p2.age);
    
    /*
     错误的赋值
     结构体只能在初始化的时候使用大括号的方式赋值
     这点跟数组类似,声明时p3已经分配内存地址,
     p3是地址常量,是不可以重新赋值的
     struct person p;
     p={"name",10};
     */
    
    return 0;
}

结果

技术分享

c语言中结构体的定义、初始化及内存分配

原文:http://www.cnblogs.com/yoran-yang/p/4285004.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!