本笔记完全基于David Beazley的Python教程-Practical Python.
List
列表是Python中存储有序值集合的主要类型,用如下的方式创建:
1 | names=['Elwood','Jake','Curtis'] |
本笔记完全基于David Beazley的Python教程-Practical Python.
列表是Python中存储有序值集合的主要类型,用如下的方式创建:
1 | names=['Elwood','Jake','Curtis'] |
本笔记完全基于David Beazley的Python教程-Practical Python.
Python与C/C++不同在于他并没有char类型,因此对于Python的字符串而言,他可以用单引号或者双引号来引导字符串.Python的字符串通常只能传入单行,遇到换行符会报错;但可以通过三引号来表示多行字符串,例如:
本笔记完全基于David Beazley的Python教程-Practical Python.
在交互模式下,Python提供了下划线变量_,他会保存最后一个表达式的结果,例如:
1 | >>> 37*42 |
但这只在交互模式下有用,我们并不会在程序中使用.
所谓程序的重定向,其实这里的程序并不是指C语言的源码程序,而是经过gcc编译器编译后的可执行文件.我们比较常用的gcc编译命令为
1 | gcc prog.c -o exec |
这里的prog.c表示C语言的源码文件,而-o exec表示将编译后的可执行文件命名为exec.如果我们不去指定-o选项,那么gcc编译器会默认将编译后的可执行文件命名为a.out.
虽然我们只用了一条命令就完成了程序的编译,但实际上编译过程其实是分为四个阶段进行的,即预处理(Preprocessing),编译(Compilation),汇编(Assembly)和链接(Linking).
我们在前面提到了用空间换时间的字节对齐规则,会发现结构体其实会浪费很多的空间以用来提高程序运行速度.在这一部分,我们将讨论结构体中的节省空间的技巧,也就是所谓的位域和柔性数组.
现代计算机的内存空间是以Byte为基本单位划分的.从理论上说,我们可以将任意的数据类型存放在任意的内存空间之上,但实际上,在现代计算机中存在一种叫做字节对齐的机制,以保证数据存放依照一定的规则进行.所以对齐其实和数据在内存中的存放位置有关,如果一个变量的内存地址正好为他的整数倍,则称之为自然对齐.例如在32位系统中,如果一个int类型的地址为0x00000004,则为自然对齐.而我们接下来讨论的字节对齐主要针对自定义类型,例如结构体,联合体等.