简单结构体

struct student{

  char name[20];   //可以用scanf或者直接赋值

    *如果用char *name  在用scanf时没有内存接收

  long id;

  int age;

  float height;

};

结构体中只能声明变量不能赋初值。

struck student zhangsan;

struck student zhangsan = {"xiaowang",2000002,20,180.5};

结构体的访问用".":xiaowang.name


typedef

typedef  struct student{

  char name[20];   //不能用char *name  在用scanf时没有内存接收

  long id;

  int age;

  float height;

}Student;     // typedef给一个存在的类型取一个别名

Student zhangsan;

Student zhangsan = {"xiaowang",2000002,20,180.5};

如果不加typedef:

struct student{

  char name[20];   //不能用char *name  在用scanf时没有内存接收

  long id;

  int age;

  float height;

}Student;//Student 是一个变量了


结构体指针

Student *s;

如果*name是字符串      s->name = "xiaowang";

如果name[]是数组接收  strcpy(s->name,"xiaowang");

s->age = 23;

Student *s[5]; //每一块都存着结构体的地址

Student xw ={"xiaowang",2345,23,164.3};

s[0] =&xw;  //结构体指针数组里面的每一个都存着地址,如果不给他内存地址,它的值就为空,不可直接赋值。

s[0]->age = 20;


结构体数组

Student array[5] ={};

strcpy(array[0].name,"xiaowang");

array[0].age = 23;


计算结构体内存空间

  如果结构体内部拥有多种数据类型,那么以占据内存字节数最高的类型对齐

typedef struct{

char *name;

int age;

}Person;//16

char * 占据8个字节, int 占据4个字节

所以age变量自动向name对齐。整个占据16个字节

typedef struct{

char name;

int age;

}Person;//

typedef struct{

char name[2];

int age;

}Person;//

typedef struct{

char name[6];

int age;

}Person;//

结构体 + typedef的更多相关文章

  1. 结构体 typedef关键字

    1 结构体 #include <iostream> #include <cstring> using namespace std; void printBook( struct ...

  2. 我学C的那些年[ch02]:宏,结构体,typedef

    c语言的编译过程: 预处理 编译 汇编 链接 而预处理中有三种情况: 文件包含( #include ) 条件编译(#if,#ifndef,#endif) 宏定义( #define ) 宏就是预处理中的 ...

  3. 结构体 typedef struct hash_cell_struct hash_cell_t;

    typedef struct hash_cell_struct hash_cell_t; struct hash_cell_struct{ void* node; /*!< hash chain ...

  4. 结构体typedef struct dtuple_struct dtuple_t;

    /** Structure for an SQL data tuple of fields (logical record) */ struct dtuple_struct { ulint info_ ...

  5. p/invoke碎片,对结构体的处理

    结构体的一些相关知识 可直接转换类类型,比如int类型,在托管代码和非托管代码中占据内存大小 和意义都是一个样的. 结构体封送的关键是:在托管代码和非托管代码中定义的一致性.什么是定义的一致性?包括结 ...

  6. C语言一维数组、二维数组、结构体的初始化

    C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...

  7. ios开发中的C语言学习—— 结构体简介

    在开发过程中,经常会需要处理一组不同类型的数据,比如学生的个人信息,由姓名.年龄.性别.身高等组成,因为这些数据是由不同数据类型组成的,因此不能用数组表示,对于不同数据类型的一组数据,可以采用结构体来 ...

  8. 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符

    [源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...

  9. Runtime机制之结构体及操作函数

    一.动态语言 Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:具有灵活性,比如:消息转发,方法交换等.它有一个运行时系统Ob ...

随机推荐

  1. 失效的URL访问限制(转)

    * 经常URL的保护仅仅是连接到该页面的链接不出现在未授权的用户面前.然而,一个有动机的.熟练的或者仅仅是幸运的黑客可能会找到并访问这些网页 , 调用这些功能并查看数据.在应用程序中,通过隐匿来实现安 ...

  2. Android--Toast时间

    /** * * 显示toast,自己定义显示长短. * param1:activity 传入context * param2:word 我们需要显示的toast的内容 * param3:time le ...

  3. .C .h 和 .CCP的区别

    1.*.H:C语言规定使用一个变量或调用一个函数前必须声明,为了使用方便,经常把常用函数,例如Windows API的函数,MFC类写入头文件.h,这样每次需要引用时只要使用#include加入就可以 ...

  4. 安卓tabhost和子Activity通信方法

    发现很多同学在问这个问题 1个tabhost对应的类假设是T,假设包含2个子tab,每个是1个activity,假设叫a,b,对应的类假设是A和B 那么有这几个问题 1.a如何调用b的方法,或者说发送 ...

  5. Tango_with_django_17笔记

    1. 在update Category tabole with SlugField中,起因是url会将空格自动转换成%20,为了把url变得美观,易读,可以用slugify,它可以把空格替换为连字符( ...

  6. django中使用json.dumps处理数据时,在前台遇到字符转义的问题

    django后台代码: import json ctx['dormitory_list'] = json.dumps([{", "is_checked": 1}, {&q ...

  7. AJAX Data 传值 无效的JSON基元:AJAX jQuery的方法,用c#WEBMETHOD-c#,jquery.

    我有这样的代码:I数据值,而不是连接字符串作为对象常量.为什么?看到这里 我的代码是这样的:- $.ajax({ url: "../Member/Home.aspx/SaveClient&q ...

  8. MERGE_SORT归并排序C++实现

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 以下实现归并排序,第一部分含有哨兵(算法来自<算法导论>),第二部分不含哨兵 第一部分 ...

  9. Web数据采集

    http://blog.csdn.net/pqhdp/article/details/4352769 http://blog.csdn.net/CharlesSimonyi/article/detai ...

  10. Fedora安装qt总结四种方法

    在fedora上安装qt有四种方法,本人由于初次接触fedora,所以还是耐心的把三个方法都测试了一遍. 1.  下载源码,手动编译,选择路径安装,请参考<fedora15下搭建QT开发环境及编 ...