码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-02-10 22:53:58      阅读:269      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!