C语言基础(L6-L7)
来源:互联网 发布:俄罗斯网络制式 编辑:程序博客网 时间:2024/04/28 07:49
L6:struct AND union
struct
1.空结构体的大小?用gcc编译链接后 空结构体占用0个字节 ,出来一个问题 如果定义两个空结构体 则两个变量占用相同的地址空间。
如果用g++编译链接 执行 ->占用1个字节,两个变量占用不同的地址空间。
2.柔性数组:数组大小待定的数组(产生斐波那契数列)
#include <stdio.h>#include <malloc.h>typedef struct _soft_array{ int len; int array[];}SoftArray;//sizeof(SoftArray) =4 //只有len有存储空间SoftArray* create_soft_array(int size){ SoftArray* ret = NULL; if( size > 0 ) { ret = (SoftArray*)malloc(sizeof(*ret) + sizeof(*(ret->array)) * size); ret->len = size; } return ret;}void fac(SoftArray* sa){ int i = 0; if( NULL != sa ) { if( 1 == sa->len ) { sa->array[0] = 1; } else { sa->array[0] = 1; sa->array[1] = 1; for(i=2; i<sa->len; i++) { sa->array[i] = sa->array[i-1] + sa->array[i-2]; } } } }void delete_soft_array(SoftArray* sa){ free(sa);}int main(){ int i = 0; SoftArray* sa = create_soft_array(10); fac(sa); for(i=0; i<sa->len; i++) { printf("%d\n", sa->array[i]); } delete_soft_array(sa); return 0;}
union 只分配 最大域的空间,所有域共享该空间
注意是小端模式还是大端模式
L7:enum 及typedef
enum 用来定义常量
enum 是真正的常量,和#define定义的不同
只能用来定义int,只能去定义时的离散值
enum Color{ GREEN, RED =2, BLUE //BLUE =3;};int main(){printf("%d\n",GREEN); // 默认0 1printf("%d\n",RED); // 默认1 2printf("%d\n",BLUE); // 默认2 3return 0}
typedef
1.用于给一个已经存在的数据类型重命名
2.并没有产生新的类型
3.typedef重定义的类型不能进行unsigned 和signed 扩展
0 0
- C语言基础(L6-L7)
- c语言基础(081223)
- C语言基础(二)
- C语言基础(三)
- c语言基础(一)
- C语言基础(一)
- C语言基础(二)
- C语言基础(一)
- C语言基础(linux)
- C语言基础(linux)
- C语言基础(一)
- C语言基础(二)
- C语言基础(三)
- C语言基础(一)
- C语言基础(二)
- C 语言基础(一)
- C 语言基础(二)
- C 语言基础(三)
- java System.out.println()
- hdu 1269 迷宫城堡
- Java学习笔记之字符串
- Lecture 海丝和武夷茶
- 阅读程序3
- C语言基础(L6-L7)
- 【深入Java虚拟机】之二:Class类文件结构
- 黑马程序员+对Java中图形化界面的总结
- hdu 1455 hdu 1455 Sticks
- 漫谈接手“半截”项目
- SSAS Tabular
- 企业级备份软件
- [leetcode][list] Remove Linked List Elements
- REST介绍(翻译自维基百科)